axis2+spring开发webservice服务器端

需求:开发VAC与SP间订购通知接口服务器端(SP端),给定VacSyncService_SPClient.wsdl文件

首先,官网下载axis2-1.6.2-bin.zip和axis2-1.6.2-war.zip
axis2-1.6.2-bin.zip包含axis2的jar包,工具和例子
axis2-1.6.2-war.zip包含了axis2的web应用,发布web服务时,将自己的程序以特定文件结构发布到axis2的web应用的service目录中

1.根据wsdl生成服务器端代码
解压axis2-1.6.2-bin.zip, cmd命令行进入到axis2-1.6.2bin:

1
cd D:axis2axis2-1.6.2bin

假设wsdl文件存放于D盘根目录,将服务器端代码生成到D:gen_code目录:

1
WSDL2Java -uri D:VacSyncService_SPClient.wsdl -p com.example -s -ss -sd -ssi -o d:gen_code

参数说明:

1234567891011121314151617181920
  -o : 指定生成代码的输出路径  -a : 生成异步模式的代码  -s : 生成同步模式的代码  -p : 指定代码的package名称  -l : 使用的语言(Java/C) 默认是java  -t : 为代码生成测试用例  -ss : 生成服务端代码 默认不生成  -sd : 生成服务描述文件 services.xml,仅与-ss一同使用  -d : 指定databingding,例如,adb,xmlbean,jibx,jaxme and jaxbri  -g : 生成服务端和客户端的代码  -pn : 当WSDL中有多个port时,指定其中一个port  -sn : 选择WSDL中的一个service  -u : 展开data-binding的类  -r : 为代码生成指定一个repository  -ssi : 为服务端实现代码生成接口类  -S : 为生成的源码指定存储路径  -R : 为生成的resources指定存储路径  --noBuildXML : 输出中不生成build.xml文件  --noWSDL : 在resources目录中不生成WSDL文件  --noMessageReceiver : 不生成MessageReceiver类

cmd里执行如上命令之后,d:gen_code会生成如下文件:
/gen_code
/gen_code/resources
/gen_code/resources/services.xml
/gen_code/resources/SyncNotifySPServiceService.wsdl
/gen_code/src
/gen_code/build.xml

2.根据wsdl生成客户端代码
cmd命令行进入到axis2-1.6.2bin:

1
WSDL2Java -uri D:myWebService.wsdl -o d:ws_client

使用:在代码中调用刚刚生成的以Stub结尾的类,可以测试服务器端

3.新建maven web项目
项目的spring配置略…
pom.xml需要添加axis2的依赖
[code lang=”xml”]

org.apache.axis2
axis2-kernel
1.6.2

org.apache.axis2
axis2-adb
1.6.2

org.apache.axis2
axis2-transport-http
1.6.2

org.apache.axis2
axis2-jaxws
1.6.2

12345678910111213141516171819202122232425262728293031
将axis2-1.6.2-war.zip中的war包解压,解压后WEB-INF下的conf,modules,services复制到项目的WEB-INF下web.xml中的内容复制到web项目的web.xml中,要复制的内容:[code lang="xml"]	<servlet>		<servlet-name>AxisServlet</servlet-name>		<servlet-class>org.apache.axis2.transport.http.AxisServlet</servlet-class>		<!--<init-param> -->		<!--<param-name>axis2.xml.path</param-name> -->		<!--<param-value>/WEB-INF/conf/axis2.xml</param-value> -->		<!--<param-name>axis2.xml.url</param-name> -->		<!--<param-value>http://localhost/myrepo/axis2.xml</param-value> -->		<!--<param-name>axis2.repository.path</param-name> -->		<!--<param-value>/WEB-INF</param-value> -->		<!--<param-name>axis2.repository.url</param-name> -->		<!--<param-value>http://localhost/myrepo</param-value> -->		<!--</init-param> -->		<load-on-startup>1</load-on-startup>	</servlet>	<servlet-mapping>		<servlet-name>AxisServlet</servlet-name>		<url-pattern>/servlet/AxisServlet</url-pattern>	</servlet-mapping>	<servlet-mapping>		<servlet-name>AxisServlet</servlet-name>		<url-pattern>*.jws</url-pattern>	</servlet-mapping>	<servlet-mapping>		<servlet-name>AxisServlet</servlet-name>		<url-pattern>/services/*</url-pattern>	</servlet-mapping>

将生成的服务器端和客户端代码复制到项目中,服务器端代码中以Skeleton结尾的类需要修改并添加业务逻辑代码
此类的spring配置
[code lang=”xml”]

1234567891011121314151617181920212223242526
在web项目的WEB-INF/services目录下建立自己的webservice目录,如下:WEB-INF/services/MyWebserviceWEB-INF/services/MyWebservice/META-INFWEB-INF/services/MyWebservice/META-INF/services.xml

其中的services.xml为之前已生成的/gen_code/resources/services.xmlservices.xml内容[code lang="xml"]<?xml version="1.0" encoding="UTF-8"?><!-- This file was auto-generated from WSDL --><!-- by the Apache Axis2 version: 1.6.1  Built on : Aug 31, 2011 (12:22:40 CEST) --><serviceGroup>    <service name="SyncNotifySPServiceService">        <messageReceivers>            <messageReceiver mep="http://www.w3.org/ns/wsdl/in-out" class="com.bjhrrh.vac.syncservice.SyncNotifySPServiceServiceMessageReceiverInOut"/>        </messageReceivers>        <parameter name="ServiceClass">com.bjhrrh.vac.syncservice.SyncNotifySPServiceServiceSkeleton</parameter>        <parameter name="useOriginalwsdl">true</parameter>        <parameter name="modifyUserWSDLPortAddress">true</parameter>        <operation name="orderRelationUpdateNotify" mep="http://www.w3.org/ns/wsdl/in-out" namespace="http://soap.bossagent.vac.unicom.com">            <actionMapping>http://soap.bossagent.vac.unicom.com/SyncNotifySPService/orderRelationUpdateNotifyRequest</actionMapping>            <outputActionMapping>http://soap.bossagent.vac.unicom.com/SyncNotifySPService/orderRelationUpdateNotifyResponse</outputActionMapping>        </operation>    </service></serviceGroup>

修改services.xml为
[code lang=”xml” highlight=”10,11”]
<?xml version=”1.0” encoding=”UTF-8”?>

com.bjhrrh.vac.syncservice.SyncNotifySPServiceServiceSkeleton
syncNotifySPServiceServiceSkeleton
false
true

http://soap.bossagent.vac.unicom.com/SyncNotifySPService/orderRelationUpdateNotifyRequest
http://soap.bossagent.vac.unicom.com/SyncNotifySPService/orderRelationUpdateNotifyResponse

1234567891011121314151617181920212223242526
SpringBeanName的值与spring中配置的bean一致useOriginalwsdl设置为false时,由axis2生成wsdl文件

**4.测试代码**```java	public class Test {	static SyncNotifySPServiceServiceStub service;

	static {		try {			service = new SyncNotifySPServiceServiceStub("http://localhost:8080/vacsyncservice/services/SyncNotifySPServiceService");		} catch (AxisFault e) {			e.printStackTrace();		}	}

	public static void main(String[] args) throws RemoteException {		System.out.println("begin...");		OrderRelationUpdateNotify orderRelationUpdateNotify = new OrderRelationUpdateNotify();		OrderRelationUpdateNotifyRequest param = new OrderRelationUpdateNotifyRequest();		orderRelationUpdateNotify.setOrderRelationUpdateNotifyRequest(param);		OrderRelationUpdateNotifyResponseE respE = service.orderRelationUpdateNotify(orderRelationUpdateNotify);		OrderRelationUpdateNotifyResponse resp = respE.getOrderRelationUpdateNotifyReturn();		System.out.println("ResultCode:" + resp.getResultCode());	}}

原文:大专栏  axis2+spring开发webservice服务器端

原文地址:https://www.cnblogs.com/wangziqiang123/p/11618300.html

时间: 2024-08-01 03:41:05

axis2+spring开发webservice服务器端的相关文章

webservice 之 使用cxf开发WebService服务器端接口

摘要:webservice 不是一种新技术,它是一种跨平台,跨语言的规范,用于不同平台,不同语言开发应用之间的交互. cxf:是java主流的WebService实现框架. 接下来开始 使用cxf开发WebService服务器端接口 1.新建一个maven项目: 2. 项目用jdk1.7(因为1.7有webservice的默认实现)项目结构如: 3. 首先新建接口,HelloWorld.java: package com.wh.webservice; import javax.jws.WebSe

JAX-WS + Spring 开发webservice

通过几天的时间研究了下使用jax-ws来开发webservice,看了网上的一些资料总结出jax-ws的开发大概分为两种. 以下项目使用的spring3.0,jar包可以到官网下载 第一种:使用独立的端口(指端口可以在spring中自定义配置) 首先说第一种方式,这种方式不需要添加额外的jar包,他使用的是JDK自带的JWS来实现的. web.xml文件配置: <?xml version="1.0" encoding="UTF-8"?> <web-

Apache axis2 + Eclipse 开发 WebService

一.简介 Apache Axis2是下一代 Apache Axis.Axis2 虽然由 Axis 1.x 处理程序模型提供支持,但它具有更强的灵活性并可扩展到新的体系结构.Axis2 基于新的体系结构进行了全新编写,而且没有采用 Axis 1.x 的常用代码.支持开发 Axis2 的动力是探寻模块化更强.灵活性更高和更有效的体系结构,这种体系结构可以很容易地插入到其他相关 Web 服务标准和协议(如 WS-Security.WS-ReliableMessaging 等)的实现中.Apache A

CXF整合Spring开发WebService

刚开始学webservice时就听说了cxf,一直没有尝试过,这两天试了一下,还不错,总结如下: 要使用cxf当然是要先去apache下载cxf,下载完成之后,先要配置环境变量,有以下三步: 1.打开环境变量配置窗口,点击新建,新建%CXF_HOME%变量,值为你下载的cxf所在的目录,我的是D:\tools\apache-cxf-3.1.0 2.在Path变量中新加一句%CXF_HOME%\lib,注意要和已有的path变量用;隔开 3.在CLASSPATH中新加一句%CXF_HOME%\li

使用CXF开发WebService服务器端接口

CXF作为java领域主流的WebService实现框架,Java程序员有必要掌握它. CXF主页:http://cxf.apache.org/ 简介:百度百科 今天的话,主要是用CXF来开发下WebService服务器端接口,明天写下开发客户端接口: 这里用Maven. 首先建一个Maven的j2se项目: 项目的jre用1.8,因为1.8有webservice的默认实现.不要用1.5 不然下面你用我的代码会有问题,用1.5的话,还需要另外加jar包,这里为了大家省事,要换成1.8; 根据规范

CXF Spring开发WebService,基于SOAP和REST方式

版本CXF2.6.9 添加的包文件 这个版本的不可在Tomcat7上运行,会出错. 配置文件 applicationContext.xml [html] view plain copy <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://ww

WebService学习总结(三)——使用JDK开发WebService

WebService学习总结(三)——使用JDK开发WebService一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中)二.使用JDK开发WebService2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示:复制代码 1 package me.g

WebService学习总结(3)——使用java JDK开发WebService

一.WebService的开发手段 使用Java开发WebService时可以使用以下两种开发手段 1. 使用JDK开发(1.6及以上版本) 2.使用CXF框架开发(工作中) 二.使用JDK开发WebService 2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示: 1 package me.gacl.ws; 2 3 import javax.jws.WebMethod

WebService-使用JDK开发WebService

一.使用JDK开发WebService 2.1.开发WebService服务器端 1.定义一个interface,使用@WebService注解标注接口,使用@WebMethod注解标注接口中定义的所有方法,如下所示: 1 package me.gacl.ws; 2 3 import javax.jws.WebMethod; 4 import javax.jws.WebService; 5 6 /** 7 * @author gacl 8 * 定义SEI(WebService EndPoint