java webservice 发布_Java编写一个WebService并在Tomcat上发布

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

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

21f56c8c3109a78d234f13b0890bba4e.png

选择如下设置:

e40bec1998788ed4bdabc2fa83d79382.png

在src目录下建个包:

d1b84d18ddb59f3ebe9a67a618293e40.png

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

package Services;

import java.sql.SQLException;

import java.util.ArrayList;

import javax.jws.WebMethod;

import javax.jws.WebService;

@WebService

public interface ResultService {

public ArrayList getResultInfo() throws SQLException;

@WebMethod

public String getJsonResultInfo();

}

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

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{

private ArrayList employees;

private Log log = LogFactory.getLog(EmployeeServiceImpl.class.getName());

@Override

public ArrayList 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;

}

@Override

public String getJsonResultInfo() {

// TODO Auto-generated method stub

String str = "";

try {

Json deJson = new Json();//JSON处理类

str = deJson.JsonStr(this.getResultInfo());

} catch (SQLException e) {

// TODO Auto-generated catch block

e.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{

public String JsonStr(ArrayList 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",如下图所示,进行本地编译测试:

c7b7ddfd958b1f07d4d1a9e904f6581e.png

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

3f4d0382307bbc51d08b66dddeb12c8d.png

下面将此WebService部署到TomCat上

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

77f97e225c275ca9faecb4d340eb84fe.png

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

ba292a2a06c77084742367f970e6024d.png

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

BPMUserService

com.sun.xml.ws.transport.http.servlet.WSServletContextListener

EmployeeServiceImpl

com.sun.xml.ws.transport.http.servlet.WSServlet

1

EmployeeServiceImpl

/EmployeeServiceImpl

EmployeeServiceImpl

/CompanyServiceImpl

EmployeeServiceImpl

/DeptServiceImpl

EmployeeServiceImpl

/DeptLeaderServiceImpl

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

da44bdbc2b88e37ae49a2076fe0b1cd4.png

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

07dd31c8b18d21cd55f375e879371cf4.png

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

fbecf5f8bcd5c4217bbbce09913c19e6.png

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

1ed6d9a4be91589b470154587bea6d63.png

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

7715da15bddb6e3497dde8e3177328a6.png

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

1dfd294438c9aea25628da0236e346ce.png

ca1bb41ce5e39bdad05bd587f711f40a.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值