代理Java Web服务

时间:2013-09-25 11:37:39

标签: java wcf web-services proxy weblogic

最近我遇到了创建在weblogic服务器上运行的代理java web服务的需求,该服务使用现有的wcf服务然后公开他们的接口(这是在weblogic服务器上“托管”wcf服务的唯一方法,我想是可能的)。

此服务的唯一作用就是充当代理(无其他功能)。

我需要能够在我的代理java Web服务中公开与现有wcf服务完全相同的接口。原因是,我有一个现有的客户端应用程序正在使用我的wcf服务 - 新的代理java Web服务必须兼容,因此客户端不需要进行任何更改。

实现这一目标的最佳方法是什么?可能吗?我没有Java技术经验,非常感谢任何提示。

到目前为止,使用JDeveloper我已经设法基于现有的wcf服务的wsdl创建了Web服务数据控件 - 是否可以通过Web服务公开这样的数据服务?

2 个答案:

答案 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的本地副本,更改端点就可以了。)

这可能是时间效率,并且几乎没有经验。