【问题标题】:Proxy Java Web Service代理 Java Web 服务
【发布时间】:2013-09-25 11:37:39
【问题描述】:

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

此服务的唯一作用只是充当代理(无附加功能)。

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

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

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

【问题讨论】:

  • 也许 Apache CXF 文档可以有一个解决方案?检查cxf.apache.org/docs/how-do-i-develop-a-client.html 并搜索“JAX-WS 代理”它可能对您有帮助。
  • 您应该能够按照您的要求进行操作。在 weblogic 端使用完全相同的 WSDL 并编写代码,以便在调用 weblogic Web 服务时,它会调用 WCF 服务。除非我误解了某些东西,否则客户永远不会知道其中的区别。
  • 非常感谢@better_use_mkstemp。这似乎是最合乎逻辑的方式。
  • 这基本上取决于您为什么希望 Weblogic 服务器看起来像托管此服务。如果您还希望其他服务使用相同的主机,则可以将 Apache Web 服务器设置为反向代理,以将特定的 Web 服务请求路由到 WCF 并将所有其他请求路由到 WebLogic 服务器。相反,如果您只需要一个代理,那么具有反向代理配置的 Apache Server 可能是比 WebLogic Server 更好的解决方案。
  • 您可以将 JAX-WS Web 服务用于 Oracle WebLogic Server。如前所述,您可以开发客户端以使用基于 XML 的 Web 服务 (JAX-WS) 的 Java API 调用 WebLogic Web 服务。 Here 是 Oracle 提供的完整文档。它简单易懂。

标签: java wcf web-services proxy weblogic


【解决方案1】:

如果您正在寻找代理功能,您可以使用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 的本地副本,更改端点即可。)

这可能会尽可能节省时间,并且几乎不需要经验。

【讨论】:

  • 不错,干净的解决方案。非常感谢!
【解决方案2】:

您几乎已经回答了您的问题。 “代理网络服务”。 javaapp-->Java代理webservice-->wcf webservice。您可以在任一端使用相同的 wsdl 结构,只是端点地址中的 IP 只会更改。要在 Java 中开发代理 Web 服务,您可以使用 Axis 或 Jax-WS。 Deepal JayasingheQuick Start Axis2 是 Axis2 的好书。它解释了服务客户端和操作客户端,重要的是您通常不会在网络参考中获得。至于 JAX-WS,您只需使用 wsdl2java 编译 wsdl 并为客户端代码生成存根。对于服务器代码编写(您将在其中调用 WCF),请参阅 http://www.mkyong.com/tutorials/jax-ws-tutorials/。您可能需要将 jaxb-api.jar 和 jaxws-api.jar 文件复制到 $JDK_HOME\jre\lib\endorsed 目录。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 2013-08-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多