![](/img/trans.png)
[英]how can i generate a web service proxy behind https and client certificate request
[英]How to create a web service proxy? Can we generate @Endpoints?
我正在使用审核进行Web服务代理(后来进行缓存=创建自己的响应),并且我需要生成@Endpoints(这样就可以转发,即调用远程Web服务或虚拟Atleast)。 似乎需要进行编组/拆组,因为代理将在请求中添加“内容”。
我们将使用spring-ws和JAXB。 获得了代理Web服务的所有XSD和静态WSDL。
周围有什么提示吗? 有人在做类似的事情吗? 你好吗
有没有简单的方法如何使用弹簧或弹簧集成实现此目的?
提前致谢..
使用Spring WS和Spring Integration应该可以实现:
借助Spring WS,您可以为远程WS创建一个代理类,并围绕org.springframework.ws.client.core.WebServiceTemplate与WS进行对话-该WS具有用于将请求编组为xml和解编为XML的API。响应。
使用Spring Integration,您可以使用出站Webservices网关 ,但是您需要在消息传递网关的前面添加该消息传递网关,该网关将充当您的代理,其方式如下:
<int:gateway id="wsproxy" service-interface="..ProxyInterface" default-request-channel="requestChannel" default-reply-channel="replyChannel"/>
<int-ws:outbound-gateway id="wsGateway" request-channel="requestChannel" uri="http://serviceURL" marshaller="someMarshaller" unmarshaller="someUnmarshaller"/>
但是,我建议您使用WebserviceTemplate的第一种方法,因为这里您不需要非常复杂的集成。
今天,我可以说说如何在不进行弹簧整合的情况下进行。 我们发现了两种不同的方法来生成@Endpoint类。
1)使用XSLT和Freemarker,我们在预编译阶段生成了端点类源。 XSLT转换遍历所有WSDL文件,以创建一个摘要文件,然后该摘要文件用于生成源。
2)我们使用Javassist复制了模板类,然后生成了有关JAXB2Marshaller实例的内容的方法,最后使用FactoryBean实例化了对象,所有这些都在服务器启动时进行 。
我们遇到的问题是,一组XSD文件以某种形式编写,这些文件导致生成的根对象没有@XmlRootAnnotation。 我们内部使用的Javassist版本与Java 1.4兼容(没有泛型),因此我们对XJC使用了全局自定义文件,并对根对象使用了强制@XmlRootAnnotation。
两种解决方案都有其优点和缺点,但是与使用ESB相比,它们都更简单。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.