当前位置:文档之家› 常见中间件安装使用方法

常见中间件安装使用方法

Soap服务模拟及服务编排方式
一. Soap协议服务模拟
1. 添加Spring ws 与jdom的支持
该文档所描述的模拟Soap协议的服务是在Spring + Maven项目的基础上创建,在文件中增加如下jar包。

<dependency>
<groupId> <artifactId>spring-ws-core</artifactId>
<version> </dependency>
<dependency>
<groupId>jaxen</groupId>
<artifactId>jaxen</artifactId>
<version></version>
</dependency>
<dependency>
<groupId></groupId>
<artifactId>jdom2</artifactId>
<version> </dependency>
<dependency>
<groupId>wsdl4j</groupId>
<artifactId>wsdl4j</artifactId>
<version> </dependency>
2. 添加文件
在配置文件中添加文件。

<xml version=""encoding="UTF-8">
<beans xmlns=""
xmlns:xsi=""xmlns:context=""
xmlns:sws=""
xsi:schemaLocation=" ">
<context:component-scan base-package=""/>
<sws:annotation-driven/>
<bean id="product_appService"
class="">
<constructor-arg value="classpath:wsdl/"/>
</bean>
</beans>
注1. 类似SpringMVC扫描@Controller包,这里要扫描注解为@Endpoint 的包。

2. 开启注解(@Endpoint、@PayloadRoot等)。

3. 存放wsdl的路径。

3. 添加webservice servlet
在中添加转发soap协议请求的servlet,如下。

<!-- Web service servlet -->
<servlet>
<servlet-name>spring-ws</servlet-name>
<servlet-class><init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:config/</param-value>
</init-param>
<init-param>
<param-name>transformWsdlLocations</param-name>
<param-value>true</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring-ws</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
注意的路径和mapping路径。

4. 编写Endpoint
在被扫描的包下编写Endpoint,每个wsdl文件可以编写一个Endpoint,每个wsdl里面的方法为一个Endpoint的方法,如下。

@Endpoint
public class UserPlanProdEnpoint {
p rivate static final String NAMESPACE_URI = "";
@PayloadRoot(namespace = NAMESPACE_URI, localPart = "get_userPlanProd") @ResponsePayload
p ublic Element get_userPlanProd(@RequestPayload Element param, @RequestPayload Element param2){
Element element = ("");
return element;
}
}
注1. 被扫描的类用Endpoint注解。

2. 务必保证namespace与wsdl里面的namespace一致。

3. @PayloadRoot注解在方法上面,“localPart”为wsdl里面对应的
方法名字,务必一致。

4. @RequestPayload和@ResponsePayload 可以把soap报文映射为jdom
元素,也可以映射为jaxb注解的java类,这里简单的映射为jdom元素。

务必保证Element类导入的包为“jdom2”,而不是“jdom”,否则可能会报找不到Endpoint的错误。

5. 使用封装好的工具返回一个jdom Element元素,该工具传入记录返
回报文模板的文件,该文件放在资源目录下的response-templ文件夹下。

二. 服务编排方式
由于soap报文参数过多的时候,科大的产品需要创建很多环节对应每个参数,所以可以在soap服务调用前一个环节把soap报文创建好,在soap模板里面把整个报文当成一个参数选择。

如下。

1. 简单的映射封装
在groovy项目中封装了一个工具类WebServiceUtil,里面的方法soapInputParamsMapping接收一个request报文(可以在SoapUI得到,不需要去掉问号)和一个Map,返回一个填好参数的请求报文。

Map中键值对为request 的节点名字和对应的值。

由于不确定OEGW传来的是什么形式的报文,目前只能做到这一步,后续会根据实际情况改进。

def param = [:]
= "12345"
= "ABCDE"
= "455677"
= "008"
= "haobing"
= "haobing"
= "haobing"
p rintln (request, param)
2. 服务的编排
把groovy项目打为一个jar包,放在zuhe/ 的下面,可以直接调用里面的方法,简化页面代码,提高编排效率。

注意,需要替换掉科大原来的groovy低版本。

相关主题