Java Web服务代理

3

最近我遇到了一个需求,需要在Weblogic服务器上创建一个代理Java Web服务,该服务消费现有的WCF服务,然后暴露它们的接口(这是我想象中唯一一种在Weblogic服务器上“托管”WCF服务的方法)。

该服务的唯一作用只是充当代理(没有其他功能)。

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

实现这一点的最佳方法是什么?这可行吗?我对Java技术没有经验,真的很感激任何提示。

到目前为止,使用JDeveloper,我已成功创建了基于现有WCF服务wsdl的Web服务数据控件 - 是否可以通过Web服务公开此类数据服务?


也许 Apache CXF 文档中有解决方案?请查看 http://cxf.apache.org/docs/how-do-i-develop-a-client.html 并搜索“JAX-WS Proxy”,它或许能帮到您。 - n3k0
4
你应该能够做到你所要求的。在weblogic端使用完全相同的WSDL,并编写代码,使得当调用weblogic Web服务时,它会调用WCF服务。除非我误解了什么,否则客户端将不会注意到任何区别。 - Display Name is missing
非常感谢@better_use_mkstemp。这似乎是最合理的方法。 - Jarek Mazur
这基本上取决于您为什么希望Weblogic服务器看起来像托管此服务。如果您希望其他服务使用相同的主机,您可以设置Apache Web服务器作为反向代理,将特定的Web服务请求路由到WCF,将所有其他请求路由到WebLogic服务器。相反,如果您只需要代理,那么具有反向代理配置的Apache服务器可能比WebLogic服务器更好的解决方案。 - anoopelias
2
你可以在Oracle WebLogic Server上使用JAX-WS Web服务。正如它所提到的,您可以使用基于XML的Web服务(JAX-WS)的Java API开发客户端来调用WebLogic Web服务。这里是Oracle提供的完整文档。它很直观且易于理解。 - istovatis
2个回答

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的本地副本,更改端点即可完成。

这可能是最省时的方法,几乎不需要任何经验。


不错,干净的解决方案。非常感谢! - Jarek Mazur

0
你几乎回答了你的问题。 "代理Web服务"。 javaapp-> Java代理webservice-> wcf webservice。您可以在端点地址中使用相同的wsdl结构,除了IP将仅更改。要在Java中开发代理webservice,您可以使用Axis或Jax-WS。《Deepal Jayasinghe》的《Quick Start Axis2》是Axis2的好书。它重要地解释了Service Client和Operational client,这些通常不包含在Web引用中。至于JAX-WS,您只需使用wsdl2java编译wsdl并为客户端代码生成存根。对于服务器代码编写(其中您将调用WCF),请参阅http://www.mkyong.com/tutorials/jax-ws-tutorials/。您可能需要复制jaxb-api.jar和jaxws-api.jar文件到$ JDK_HOME \ jre \ lib \ endorsed目录中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接