最近我遇到了创建在weblogic服务器上运行的代理java web服务的需求,该服务使用现有的wcf服务然后公开他们的接口(这是在weblogic服务器上“托管”wcf服务的唯一方法,我想是可能的)。
此服务的唯一作用就是充当代理(无其他功能)。
我需要能够在我的代理java Web服务中公开与现有wcf服务完全相同的接口。原因是,我有一个现有的客户端应用程序正在使用我的wcf服务 - 新的代理java Web服务必须兼容,因此客户端不需要进行任何更改。
实现这一目标的最佳方法是什么?可能吗?我没有Java技术经验,非常感谢任何提示。
到目前为止,使用JDeveloper我已经设法基于现有的wcf服务的wsdl创建了Web服务数据控件 - 是否可以通过Web服务公开这样的数据服务?
答案 0 :(得分:0)
你差不多回答了你的问题。 “代理Web服务”。 javaapp - > Java代理webservice - > wcf webservice。您可以使用相同的wsdl结构,但端点地址中的IP只会更改。要使用Java开发代理Web服务,您可以使用Axis或Jax-WS。 Deepal Jayasinghe 的快速入门Axis2 是Axis2的好书。它重要地解释了服务客户端和操作客户端,您通常不会进入Web引用。至于JAX-WS,您只需使用wsdl2java编译wsdl并为客户端代码生成存根。对于服务器代码编写(您将调用WCF),请参阅http://www.mkyong.com/tutorials/jax-ws-tutorials/
。您可能必须复制到$ JDK_HOME \ jre \ lib \ endorsed目录jaxb-api.jar和jaxws-api.jar文件。
答案 1 :(得分:0)
如果是您要查找的代理功能,则可以使用this project。
如果您正在使用maven:
<dependency>
<groupId>org.mitre.dsmiley.httpproxy</groupId>
<artifactId>smiley-http-proxy-servlet</artifactId>
<version>1.2</version>
</dependency>
如果你没有使用maven,你可能只是从Github存储库中获取jar文件。
然后在您的web.xml中,您可以将其指向实际服务所在的位置:
<servlet>
<servlet-name>sampleProxy</servlet-name>
<servlet-class>org.mitre.dsmiley.httpproxy.ProxyServlet</servlet-class>
<init-param>
<param-name>targetUri</param-name>
<param-value>http://localhost:9200/</param-value>
</init-param>
<init-param>
<param-name>log</param-name>
<param-value>true</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>sampleProxy</servlet-name>
<url-pattern>/sample/*</url-pattern>
</servlet-mapping>
(如果您的实际服务的WSDL在其中定义了一个端点到实际服务,只需保留WSDL的本地副本,更改端点就可以了。)
这可能是时间效率,并且几乎没有经验。