java实现webservice实例

15 篇文章 0 订阅

今天尝试着用Axis开发Web service,看来网上几个帖子之后,将自己尝试的过程分享下。

概念:soap(简答对象访问协议)、wsdl(web服务描述语言)、xml(可扩展标记语言)、axis(阿帕奇可扩展交换系统)

一、Axis环境的配置

1、去官网下载axis-bin-1_4.zip

  http://axis.apache.org/axis/

  http://apache.fayea.com/apache-mirror/axis/axis/java/1.4/

2、下载 Axis依赖包 geronimo-activation-1.0.jar、xmlsec-2.0.0-rc1.jar、mail-1.4.1.jar 可以去maven的中央数据库下载。

  http://search.maven.org/#browse

3、将axis-bin-1_4.zip解压,目录下的axis-1_4\webapps\ 中的axis发布到tomcat中,同时将Axis的3个依赖包考到项目的WEB-INF\lib下, 运行tomcat。

4、配置环境变量(ps:感觉不用配置环境变量,不过我还是配置了,有兴趣自己尝试!)配置方法类似jdk的环境变量。

AXIS_HOME= E:\apache-tomcat-6.0.37-windows-x86\apache-tomcat-6.0.37\webapps\axis 

AXIS_LIB=%AXIS_HOME%\lib

AXISCLASSPATH=%AXIS_LIB%\axis.jar;%AXIS_LIB%\commons-discovery-0.2.jar;%AXIS_LIB%\commons-logging-

1.0.4.jar;%AXIS_LIB%\jaxrpc.jar;%AXIS_LIB%\saaj.jar;%AXIS_LIB%\log4j-1.2.8.jar;AXIS_LIB%\xml-apis.jar;%AXIS_LIB%\xercesImpl.jar  

二编写wsdd发布web服务

1、入参,RequestBean

package com.webservice.bean;


public class RequestBean {
private String msg;


public String getMsg() {
return msg;
}


public void setMsg(String msg) {
this.msg = msg;
}
 
}

2、回参,ResponseBean 

package com.webservice.bean;


public class ResponseBean {
    private int code;
    private String msg;
    
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
   
}

3、service方法

package com.webservice.service;


import com.webservice.bean.RequestBean;
import com.webservice.bean.ResponseBean;


public class BusinessService {
public ResponseBean send(RequestBean requestBean){
ResponseBean res = new ResponseBean();
if(requestBean != null && !requestBean.getMsg().trim().equals("")){
res.setCode(0);
res.setMsg("收到消息:"+requestBean.getMsg());
System.out.println(res.getMsg());
}else{
res.setCode(-1);
res.setMsg("调运失败!");
System.out.println("调运失败!");
}
return res;
}
}

4、在工程的WEB-INF目录下,编写deploy.wsdd

<deployment xmlns="http://xml.apache.org/axis/wsdd/" xmlns:java="http://xml.apache.org/axis/wsdd/providers/java">
    <service name="BusinessService" provider="java:RPC">
       <parameter name="className" value="com.webservice.service.BusinessService" />
       <parameter name="allowedMethods" value="*" />
       <beanMapping qname="myNS:RequestBean" xmlns:myNS="urn:BeanService" languageSpecificType="java:com.webservice.bean.RequestBean" />
       <beanMapping qname="myNS:ResponseBean" xmlns:myNS="urn:BeanService" languageSpecificType="java:com.webservice.bean.ResponseBean" />
    </service>
</deployment>

    在工程的WEB-INF目录下,编写undeploy.wsdd(用来卸载webservice服务)

<undeployment xmlns="http://xml.apache.org/axis/wsdd/">
   <service name="BusinessService"/>
</undeployment>

5、部署项目(java文件,自己编译,放到相应目录下),启动tomcat,使用cmd,进入axis项目中的web-inf目录,

发布webservice服务

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/servlet/AxisServlet deploy.wsdd

取消webservice服务

java -Djava.ext.dirs=lib org.apache.axis.client.AdminClient -lhttp://localhost:8080/axis/servlet/AxisServlet undeploy.wsdd

6、访问 http://localhost:8080/axis/servlet/AxisServlet,如果出现刚刚新增的BusinessService 服务说明发布成功

三编写client访问web服务,生成客户端代码

1、获取webservice接口的wsdl文件,访问:http://localhost:8080/axis/servlet/AxisServlet,点击 方法后边的(wsdl)链接,跳转到wsdl内容页面,复制wsdl中的xml内容保           存成文本,  去掉每行的"-",命名为BusinessService.wsdl。

2、使用myeclipse新建web工程,testWebservice,导入Axis jar包到web-inf中lib目录下。将BusinessService.wsdl考到web-inf下。


在web-inf下生产工具文件(wsdl生成java客户端文件.bat),执行文件“wsdl生成java客户端文件.bat”,生产客户端代码。  


set Axis_Lib=D:\Workspaces\MyEclipse10\testWebservice\WebRoot\WEB-INF\lib

set Java_Cmd=java -Djava.ext.dirs=%Axis_Lib%


set Output_Path=D:\Workspaces\MyEclipse10\testWebservice\src


set Package=com.webservice.impl


%Java_Cmd% org.apache.axis.wsdl.WSDL2Java -o%Output_Path% -p%Package% D:\Workspaces\MyEclipse10\testWebservice\WebRoot\WEB-INF\BusinessService.wsdl


@echo  -------------OK-----------------


@echo ---The code has been created in the folder: Testclient---


@pause

(ps:Axis_Lib 是Axisjar包的位置,Output_Path输出位置,Package包名称)


3编写测试类teseWebservice(使用JUnit4 测试) 

package com.test;

import java.net.URL;
import java.rmi.RemoteException;
import javax.xml.rpc.ServiceException;
import org.junit.Test;
import com.webservice.impl.BusinessServiceService;
import com.webservice.impl.BusinessServiceServiceLocator;
import com.webservice.impl.BusinessService_PortType;
import com.webservice.impl.RequestBean;
import com.webservice.impl.ResponseBean;

public class teseWebservice {
@Test
public void test() throws ServiceException, RemoteException{
   // BusinessServiceService为接口;BusinessServiceServiceLocator为接口实现类
   BusinessServiceService service = new BusinessServiceServiceLocator();
   // 设置要使用的接口服务地址:多用于动态调用不同服务器上的接口
   //URL portAddress = new URL("http://localhost:8080/axis/services/BusinessService");
   BusinessService_PortType client = (BusinessService_PortType) service.getBusinessService();
   // 传参数bean
   RequestBean requestBean = new RequestBean();
   requestBean.setMsg("jiaqi service");
   // 发送并接收返回的结果
   ResponseBean resp = client.send(requestBean);
   int code = resp.getCode();
   String errorMsg = resp.getMsg();
   System.out.println("消息已返回,code=" + code + ",errorMsg=" + errorMsg);
}
}

如果返回正确结果那么说明webservice结果正确。

-----------------------------------------------------------------------------------------------------------------------------


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值