Java编写一个WebService并在Tomcat上发布

本例采用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项目名称+服务名。即可访问服务:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/548422.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows环境下搭建Tomcat

下载Tomcat&#xff0c;点击这里下载Tomcat 解压到指定目录: 配置环境变量&#xff1a;右键“我的电脑” ——属性——高级系统设置——环境变量 配置三个环境变量&#xff1a; 在系统变量里新建变量名&#xff1a;CATALINA_BASE&#xff0c;变量值&#xff1a;D:\apache-t…

c3p0连接池的配置和简单使用

背景 一般我们在项目中操作数据库时&#xff0c;都是每次需要操作数据库就建立一个连接&#xff0c;操作完成后释放连接。因为jdbc没有保持连接的能力&#xff0c;一旦超过一定时间没有使用&#xff08;大约几百毫秒&#xff09;&#xff0c;连接就会被自动释放掉。而每次新建连…

Iterator_迭代器模式_PHP语言描述

2019独角兽企业重金招聘Python工程师标准>>> 感觉最近写的这些设计模式的例子&#xff0c;在定义描述方面差很多&#xff0c;以后都会先写一下用例设计模式的定义及简单讲解&#xff0c;在把例子附上&#xff0c;这样的感觉更好些&#xff0c;也让大家看得更清楚一些…

Spring整合JDBC开发

背景 在JDBC开发中&#xff0c;充斥这大量重复的代码&#xff0c;可能只是换了个SQL语句&#xff0c;其他代码是完全不用变的。Spring的jar包里&#xff0c;提供了一个叫JDBCTemplate的模板&#xff0c;在保持操作灵活方便的情况下&#xff0c;将代码量降到最低。 配置文件 首…

基于SpringMVC进行REST服务开发

背景 REST的概念这里不多过多阐述。在REST中&#xff0c;资源通过URL进行识别和定位。一般来说&#xff0c;以下这些HTTP方法通常会匹配为如下的CRUD动作&#xff1a; Create&#xff1a;POST Read&#xff1a;GET Update&#xff1a;PUT或PATCH Delete&#xff1a;DELETE…

PCI总线原理(二)

http://blog.c114.net/html/15/562315-75227.html PCI即Peripheral Component Interconnect&#xff0c;中文意思是“外围器件互联”&#xff0c;是由PCISIG (PCI Special Interest Group)推出的一种局部并行总线标准。在现在电子设备中应用非常广泛&#xff0c;下面我详细介绍…

Windows环境中在同一个Tomcat下发布不同端口号的不同web程序

一、修改Tomcat路径下的conf文件下的 server.xml 文件。增加一个service 节点。 原service节点如下图所示&#xff1a; 新增service节点如下图所示&#xff0c;注意红色标注的是要修改的地方&#xff1a; 二、根据service.xml配置文件信息中对应的Engine节点的name属性&#…

Mybatis逆向工程自动生成代码文件

一般来说都会新建另外一个项目&#xff0c;用于生成代码文件&#xff0c;然后拷贝到需要的项目中。新建maven项目用于生成代码文件&#xff0c;项目目录如下所示&#xff1a; pom.xml内容如下&#xff1a; <project xmlns"http://maven.apache.org/POM/4.0.0" x…

LAMP平台架构浅析

LAMP是一个缩写&#xff0c;它指一组常用于来搭建动态网站或者服务器的开源软件&#xff0c;包括&#xff1a;Linux操作系统&#xff0c;Apache网络服务器&#xff0c;MySQL数据库&#xff0c;PHP、Perl或者 Python编程语言(本文以php为例)。 下面就介绍一下如何基于rpm包的形式…

Log4j.properties的简单配置

一、首先导入jar包&#xff1a;log4j-1.2.17.jar 二、新增log4j.properties配置文件并输入以下内容&#xff1a; 三、在测试代码总中进行测试&#xff1a; Service public class CKKuCunServiceImpl implements CKKuCunService{Autowiredpublic CKKuCunMapper ckKuCunMapper;…

建立openstack quantum开发环境 .

建立openstack quantum开发环境 作者&#xff1a;张华 发表于&#xff1a;2012-4-6 版权声明&#xff1a;可以任意转载&#xff0c;转载时请务必以超链接形式标明文章原始出处和作者信息及本版权声明 ( http://blog.csdn.net/quqi99 ) 上篇中讲了如何建立openstack的最小开发环…

使用Jquery插件bTabs实现多页签打开效果

官网地址&#xff1a;点击这里进入官网 资源导入 <link rel"stylesheet" href"b.tabs.css" type"text/css"> <!-- 插件核心脚本 --> <script type"text/javascript" src"b.tabs.js" ></script> &l…

体验Office 2013预览版

微软目前刚发布新版本的office2013,暂时没有中文版。Windows 8下搭配64位office 2013效果非常不错&#xff0c;具体浏览下方的视频。 X86&#xff08;32位&#xff09; 英文版&#xff1a;http://care.dlservice.microsoft.com/download/4/7/1/4712B4E1-4DD9-4468-B8A4-507D7F9…

网络营销第四课:网络营销需要掌握的网页代码(2)

1、<hr>水平线标记&#xff1a;<HTML> <HEAD> <TITLE>HR的用法</TITLE> </HEAD> <BODY> <H3>插画中国论坛:漫画 卡通 吉祥物 游戏 海报(原创) </H3> <HR size 15 align left width 80%> <HR color"…

PDA手持终端WinCE系统连接SqlServer数据库

引言&#xff1a;因项目需求需要通过使用PDA手持终端对条码进行数据采集&#xff0c;并将数据传输到SqlServer进行增删改查操作&#xff0c;一般来说&#xff0c;跟sqlserver的版本没有特别大的关系&#xff0c;我见过用05的、08的、我自己用的2014版本。PDA用的是基恩士的&…

堆和栈、值类型与引用类型、装箱与拆箱

堆栈&#xff1a;内存条里的某一块。 电脑中有6个地方可以保存数据。 <1>寄存器&#xff1a;保存最快。这东西在处理器内部。也就是CPU里的一小块地方给你放数据。既然是CPU&#xff0c;那么主要工作是计算&#xff0c;所以这块寄存器能放的东西十分有限&#xff0c;寄存…

ASP.NET MVC 上传图片到项目目录中的文件夹并显示

因项目需求&#xff0c;需要一个上传图片并显示的功能&#xff0c;类似于上传头像并显示出来。查阅了网上资料&#xff0c;写了个Demo&#xff0c;希望能帮助到更多的人。此Demo基于ASP.NET MVC实现。 选择图片&#xff1a; 点击按钮进行上传&#xff1a; 一、先在项目中新建一…

JQuery Datatables 样式Style

用了这么久的datatables&#xff0c;才发现datatables有具体的样式和详细说明&#xff0c;还可以自定义配置查看。 点击这里进入datatables官网具体样式查看 一、所有的class属性及示例HTML代码写法&#xff1a; 二、 表格内样式(字体居中、居左、居右等)&#xff0c;targets代…

Juniper SA SSL ×××配置宁盾DKEY短信动态密码步骤

1. 方案简介 传统的双因子认证技术是基于硬件令牌方式&#xff0c;IT管理员会为每个用户分配分发一只令牌&#xff0c;用户登录时输入令牌上显示的6位随即数字&#xff0c;即可完成登录是目前最为常用的强身份认证方案&#xff0c;它最大优点在于认证响应度高&#xff0c;然而采…