使用AXIS2实现多个服务

一、使用AXIS2 1.4根据WSDL分别生成服务端代码

例:

1)生成多个用户信息查询服务端代码:

wsdl2java -uri MultipleUserInfoQuery.wsdl -ss -sd -g -ns2p http://www.test.com/schema/MultipleUserInfoQuery/=com.test.demo.userinfo.multiple,http://www.test.com/schema/MultipleUserInfoQuery/type=com.test.demo.userinfo.multiple.type

 2)生成单个用户信息查询服务端代码:

wsdl2java -uri SingleUserInfoQuery.wsdl -ss -sd -g -ns2p http://www.test.com/schema/SingleUserInfoQuery/=com.test.demo.userinfo.single,http://www.test.com/schema/SingleUserInfoQuery/type=com.test.demo.userinfo.single.type

二、新增接口

增加一个都支持查询的接口,将两个接口合并为一个接口,示例代码如下: 

public interface IUserInfoQuery
    {
        public com.test.demo.userinfo.single.QuerySingleUserInfoResponse querySingleUserInfo(
                com.test.demo.userinfo.single.QuerySingleUserInfo querySingleUserInfo);

        public com.test.demo.userinfo.multiple.QueryMultipleUserInfoResponse queryMultipleUserInfo(
                com.test.demo.userinfo.multiple.QueryMultipleUserInfo queryMultipleUserInfo);
    }

三、 合并两个服务的***MessageReceiverInOut.java类

这一步是最关键的一步操作,如果能合并成功,这个功能基本上就实现了。
示例操作如下:

1):将IMultipleUserInfoQueryMessageReceiverInOut.java复制到all包下,将名称改为:

       IUserInfoQueryMessageReceiverInOut.java
2):IMultipleUserInfoQuerySkeleton skel = (IMultipleUserInfoQuerySkeleton) obj;;改为:

       IUserInfoQuery skel = (IUserInfoQuery) obj;
3):在invokeBusinessLogic方法中将ISingleUserInfoQueryMessageReceiverInOut.java类

       invokeBusinessLogic方法中if ("querySingleUserInfo".equals(methodName))语句包含的

       内容合并到IUserInfoQueryMessageReceiverInOut.java中。
4):根据错误提示,复制相应的方法即可;

四、配置服务

将生成的Service.xml配置文件合并成一个,然后在添加一个都支持的配置文件,都支持的配置示例如下:

<!-- 都支持配置 -->
<service name="UserInfoQuery">
	<messageReceivers>
	
		<!-- 配置新增的***Inout -->
		<messageReceiver mep="http://www.w3.org/ns/wsdl/in-out"
			class="com.test.demo.userinfo.all.IUserInfoQueryMessageReceiverInOut"/>
	</messageReceivers>
	
	<!-- 配置完成该功能的实现类 -->
	<parameter name="ServiceClass">
		com.test.demo.userinfo.all.UserInfoQueryImpl
	</parameter>
	<parameter name="useOriginalwsdl">true</parameter>
	<parameter name="modifyUserWSDLPortAddress">true</parameter>
	<operation name="queryMultipleUserInfo"
		mep="http://www.w3.org/ns/wsdl/in-out"
		namespace="http://www.test.com/schema/MultipleUserInfoQuery/">
		<actionMapping>
			http://www.test.com/schema/MultipleUserInfoQuery
		</actionMapping>
		<outputActionMapping>
			http://www.test.com/schema/MultipleUserInfoQuery/MultipleUserInfoQuery/queryMultipleUserInfoResponse
		</outputActionMapping>
	</operation>
</service>

 

 

你可能感兴趣的:(使用AXIS2实现多个服务)