Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
代理Java Web服务_Java_Wcf_Web Services_Proxy_Weblogic - Fatal编程技术网

代理Java Web服务

代理Java Web服务,java,wcf,web-services,proxy,weblogic,Java,Wcf,Web Services,Proxy,Weblogic,最近,我需要创建一个运行在weblogic服务器上的代理java web服务,该服务使用现有的wcf服务,然后公开它们的接口(我认为这是在weblogic服务器上“托管”wcf服务的唯一方法) 此服务的唯一作用是充当代理(无其他功能) 我需要能够在代理JavaWeb服务中公开与现有wcf服务中完全相同的接口。这样做的原因是,我有一个使用我的wcf服务的现有客户机应用程序——新的代理java web服务必须兼容,这样就不需要在客户机端进行任何更改 实现这一目标的最佳方法是什么?可能吗?我没有jav

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

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

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

实现这一目标的最佳方法是什么?可能吗?我没有java技术方面的经验,如果有任何提示,我将不胜感激


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

您几乎已经回答了您的问题。“代理Web服务”。javaapp-->Java代理Web服务-->wcf Web服务。除了端点地址中的IP只会更改之外,您可以在任何一端使用相同的wsdl结构。要在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\endorned目录jaxb-api.jar和jaxws-api.jar文件。

如果您正在寻找代理功能,您可以使用

如果您正在使用:


org.mitre.dsmiley.httpproxy
smiley http代理servlet
1.2
如果您没有使用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>

样本代理
org.mitre.dsmiley.httpproxy.ProxyServlet
塔格图里
http://localhost:9200/
日志
真的
样本代理
/样品/*
(如果您的实际服务的WSDL中定义了一个指向实际服务的端点,只需保留WSDL的本地副本,更改端点即可。)


这可能是最省时的,而且几乎不需要经验。

也许Apache CXF文档可以提供一个解决方案?检查并搜索“JAX-WS代理”,它可能会对您有所帮助。您应该能够按照自己的要求进行操作。在weblogic端使用完全相同的WSDL并编写代码,以便在调用weblogic web服务时,它随后调用WCF服务。客户永远不会知道区别,除非我误解了什么。非常感谢@better\u use\u mkstemp。这似乎是最合乎逻辑的方式。这主要取决于为什么您希望Weblogic服务器看起来像托管此服务。如果您希望其他服务也使用相同的主机,可以将Apache Web服务器设置为反向代理,将特定的Web服务请求路由到WCF,并将所有其他请求路由到WebLogic服务器。相反,如果您只需要一个代理,那么使用反向代理配置的Apache服务器可能是比WebLogic Server更好的解决方案。如前所述,您可以使用JavaAPI为基于XML的Web服务(JAX-WS)开发客户端来调用WebLogic Web服务。是Oracle提供的完整文档。这是一个简单易懂的解决方案。非常感谢你!
<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>