本例采用Myeclipse 2016 CI 6,JDK1.8 。新建一个Web Service Project。

选择如下设置:

在src目录下建个包:

编写一个接口,其中一个方法返回ArrayList,另一个方法返回JSON:

package Services;
import java.sql.SQLException;
import java.util.ArrayList;import javax.jws.WebMethod;
import javax.jws.WebService;@WebService
public interface ResultService<E> {public ArrayList<E> getResultInfo() throws SQLException;@WebMethodpublic String getJsonResultInfo();
}

编写四个JavaBean实体类用于返回泛型ArrayList<E>类型:

package Services;public class Employee {     private String WORKCODE;private String LASTNAME;private Long SUBCOMPANYID1;private Long DEPARTMENTID1;private String JOBTITLEMARK;private String JOBCALL;private String JOBLEVEL;private long MANAGERID;private String STATUS;private String LOCATIONNAME;private String MOBILE;private String MOBILECALL;private String TELEPHONE;private String STARTDATE;private String LASTMODDATE;//set and get.......
}
package Services;public class Company {private long ID;private String SUBCOMPANYNAME;//get and set.......
}
package Services;public class Dept {private long ID;private String DEPARTMENTNAME;private long SUPDEPID;private long SUBCOMPANYID1;private String DEPARTMENTMARK;private String CANCELED;//get and set......
}
package Services;public class DeptLeader {private long BMFZR;private long BM;//get and set....
}

编写四个子类实现上面这个接口,这里就只举例一个子类吧,其他三个模式一样:

package Services;import java.sql.SQLException;
import java.util.ArrayList;
import javax.jws.WebService;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;@WebService
public class EmployeeServiceImpl implements ResultService<Employee>{private ArrayList<Employee> employees;private Log log = LogFactory.getLog(EmployeeServiceImpl.class.getName());@Overridepublic ArrayList<Employee> getResultInfo() throws SQLException {// TODO Auto-generated method stub           PropertiesServiceImpl pro = new PropertiesServiceImpl();//配置文件信息读取类String conn =  pro.getConn();String user = pro.getUser();String password = pro.getPassword();String table = pro.getViewEmployee();JdbcUtils cs = new JdbcUtils(conn, user, password);//JDBC处理类String sqlString = "SELECT * FROM " + table;log.info("SQl:" + sqlString);employees = cs.queryEmployeeResult(sqlString); return employees;}@Overridepublic String getJsonResultInfo() {// TODO Auto-generated method stubString str = "";try {Json<Employee> deJson = new Json<Employee>();//JSON处理类str = deJson.JsonStr(this.getResultInfo());} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}return str;}
}

其中,JSON类的代码如下图所示,该类能将ArrayList转化为Json字符串,如下图所示,使用JSONArray需要引用几个jar包,点击这里下载 json-lib jar包

package Services;
import java.util.ArrayList;
import net.sf.json.JSONArray;public class Json<E>{public String JsonStr(ArrayList<E> Lists){return JSONArray.fromObject(Lists).toString();}
}

编写ServicePublish类,里面有个main函数,用于本地发布测试。

package Services;
import javax.xml.ws.Endpoint;public class ServicePublish {  public static void main(String[] args){PropertiesServiceImpl pro = new PropertiesServiceImpl();String baseAddress = pro.getUrl();String employeeAddress = baseAddress + "Service/Employee";String companyAddress = baseAddress + "Service/Company";String deptAddress = baseAddress + "Service/Dept";String deptLeaderAddress = baseAddress + "Service/DeptLeader";Object implementorEmployee = new EmployeeServiceImpl();Object implementorCompany = new CompanyServiceImpl();Object implementorDept = new DeptServiceImpl();Object implementorDeptLeader = new DeptLeaderServiceImpl();Endpoint.publish(employeeAddress, implementorEmployee);      Endpoint.publish(companyAddress, implementorCompany);Endpoint.publish(deptAddress, implementorDept);Endpoint.publish(deptLeaderAddress, implementorDeptLeader);}
}

右键,选择"Run As" ——"Java Application",如下图所示,进行本地编译测试:

能出现XML说明成功了,到此为止本地运行成功:


下面将此WebService部署到TomCat上

首先需要添加一些jar包,总共25个,将这25个jar包添加到Tomcat路径的lib文件夹下。25个jar包的目录如下图所示:点击这里下载这25个jar包

在web项目的WEB-INF目录下,创建sun-jaxws.xml配置文件,内容如下图所示:

然后还是在web项目的web-info目录下,创建web.xml配置文件,内容下图所示:

<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"><display-name>BPMUserService</display-name><listener><listener-class>com.sun.xml.ws.transport.http.servlet.WSServletContextListener</listener-class>
</listener><servlet><servlet-name>EmployeeServiceImpl</servlet-name><servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class><load-on-startup>1</load-on-startup>
</servlet><servlet-mapping><servlet-name>EmployeeServiceImpl</servlet-name><url-pattern>/EmployeeServiceImpl</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>EmployeeServiceImpl</servlet-name><url-pattern>/CompanyServiceImpl</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>EmployeeServiceImpl</servlet-name><url-pattern>/DeptServiceImpl</url-pattern>
</servlet-mapping><servlet-mapping><servlet-name>EmployeeServiceImpl</servlet-name><url-pattern>/DeptLeaderServiceImpl</url-pattern>
</servlet-mapping></web-app>

右键点击项目,将整个web项目导出为war包,如下图所示:

选择导出路径,还可以选择覆盖原文件:

将war包放入Tomcat的webapps文件夹下,如下图所示:

因为服务器中,默认的8080端口号已经被占用,所以我需要修改Tomcat默认的端口号, 在Tomcat的目录结构下找到conf文件夹,里面有个server.xml文件。

修改为8090端口,如下图所示:

启动Tomcat,并输入Url,Url是地址+web项目名称+服务名。即可访问服务:

Java编写一个WebService并在Tomcat上发布相关推荐

  1. 停车场管理系统 java_使用java编写一个停车场管理系统

    使用java编写一个停车场管理系统 发布时间:2020-11-30 16:00:28 来源:亿速云 阅读:145 作者:Leah 这篇文章给大家介绍使用java编写一个停车场管理系统,内容非常详细,感 ...

  2. 用Java编写一个最简单的桌面程序

    使用Java的优势在于网络应用方面,但Java也提供了强大的用于开发桌面程序的API,它们包含在javax.swing包中.使用这个包可以编写简单的Java桌面应用程序. Java的javax.swi ...

  3. java编写存钱_用Java编写一个简单的存款

    package desposit.money; public class DespositMoney { public static void main(String[] args) { Custom ...

  4. 用java编写一个简单计算器

    java 采用java编写一个简单计算器,使用awt和swing 代码如下: import java.awt.Color; import java.awt.Font; import java.awt. ...

  5. java编写一个个人通信录程序

    Java编写一个个人通信录程序,具有如下功能: (1)定义一个类,包括姓名.邮政编码.通信地址等成员变量 (2)查找:根据姓名在文件中查找个人信息,如果找到则显示出来 (3)添加:向文件中写个人信息 ...

  6. java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数。另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码。

    java编写一个彩票开奖的模拟程序.游戏共有两种玩法,一种是21选5,即玩家输入5个1到21内的不重复的数.另外一种玩法是6+1玩法,即要求玩家输入7个整数,代表所购买的彩票号码,最后一个是特码. 具 ...

  7. 微机原理:编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出。

    微机原理:编写一个源程序,在键盘上按一个键,将从AL返回的ASCII码值显示出来,如果按下ESC键则程序退出. DATAS SEGMENT msg db 'Input ',0dh,0ah,'$' te ...

  8. 如何用java编写一个简单的多人PK游戏

    如何用java编写一个简单的多人PK游戏 类与对象---PK游戏的编写 素材取用----王者荣耀和BILIBILI 创建两个对战的角色(PK游戏最少需要两名角色) 创建孙尚香和Van 设置孙尚香和Va ...

  9. JAVA编写一个年龄大小判断年纪题

    JAVA编写一个年龄大小判断年纪题 public class C{public static void main(String [] args){java.util.Scanner s = new j ...

最新文章

  1. [Tips]:SQL server 2005 Create Assembly Failed
  2. 数据中心服务器机架是什么?
  3. regasm注册com组件
  4. JavaSist之ClassPool
  5. python 文件操作的模块_Python之文件操作修改模块
  6. git remote: HTTP Basic: Access denied
  7. 史上最简单MySQL教程详解(进阶篇)之存储引擎介绍及默认引擎设置
  8. 【渝粤题库】陕西师范大学200851 微机实用技术
  9. i 智慧 | 回首30年存储演进之路 再看新数据时代阿里云存储如何革故鼎新?
  10. hibernate 高并发下遇到的大坑
  11. “删库跑路”这件事情真的发生了 ,还是技术总监干的!
  12. excel匹配_Excel常用的关联匹配函数
  13. java 实现nfa的化简_NFA的实现
  14. Mac 10.10下安装MySQL5.6.21提示安装失败
  15. 5.1傅里叶展开,傅里叶级数推导--非常棒
  16. Call for Speaker!Flink Forward 全球在线会议议题征集 ing
  17. 合伙人的重要性超过了商业模式和行业选择(转)
  18. 如何通过VISIO来画网络拓扑图
  19. Cloudflare DDNS梅林插件代码
  20. 密码学--认证协议(Authentication Protocol)分类

热门文章

  1. Python语法特点如注释规则、代码缩进、编码规范等
  2. drbd(三):drbd的状态说明
  3. angular的$http发送post,get请求无法传送参数的问题
  4. 关于DDD中Domain的思考
  5. [置顶] Z-STACK之OSAL_Nv非易失性存储解读上
  6. vim高级技巧(split)_小花_新浪博客
  7. VRRP在生产环境中的应用
  8. b700a怎么连蓝牙_233621蓝牙2.1无线音箱B700A小测
  9. 高校学计算机研究生录取分数排名,四川大学计算机学院2018年硕士研究生招生拟录取名单及成绩公示...
  10. android qq登录 获取用户信息吗,免登录 只需要一个QQ号就能获取QQ头像和QQ昵称 获取QQ用户信息API...