Java 两个Web服务之间的通信

Java 两个Web服务之间的通信,java,web-services,websphere,Java,Web Services,Websphere,我对web服务有问题。它们是用Java编程的,在WASCE服务器上运行(两者都在同一台服务器上)。 我想解决的问题是: 我们有两个Web服务:App1和App2 在App1中,我想调用App2中的函数。我该怎么做?这可能吗? 我尝试在App1中创建一个soapClient,以便连接到App2,但这不起作用。 经验: 我有一个调用app1的客户端,它从app1获取数据并将其发送到app2,然后从app2获取响应数据并将其发送到app1中的其他函数 我想做的是跳过客户端部分并直接执行它,这样app1

我对web服务有问题。它们是用Java编程的,在WASCE服务器上运行(两者都在同一台服务器上)。 我想解决的问题是: 我们有两个Web服务:App1和App2

在App1中,我想调用App2中的函数。我该怎么做?这可能吗? 我尝试在App1中创建一个soapClient,以便连接到App2,但这不起作用。 经验: 我有一个调用app1的客户端,它从app1获取数据并将其发送到app2,然后从app2获取响应数据并将其发送到app1中的其他函数

我想做的是跳过客户端部分并直接执行它,这样app1就可以直接将数据发送到app2,然后接收一个答案,并执行它需要执行的任何操作

注意:两个web服务都使用到数据库的连接

先谢谢你。 (已使用其他数据编辑)

这绝对是可能的,根据您想要的内容以及对其施加的限制,复杂度和可行性的级别会有所不同

如果App2中的方法是公共的,那么可能最简单的方法之一就是创建一个公开该方法的web服务,并从App1调用if

如果您希望App2的方法本质上是“受保护的”,这样App1就可以调用它,而公共客户端就不能调用它,那么有几个可选的选项。首先,您可以使用防火墙或等效物来阻止对服务URL的外部请求。或者,您可以通过某种形式的进程间通信公开该方法;显然是Java的本机方法(在App2中设置一个RMI方法并通过管理器导出,然后在App1中获取引用并远程调用该方法)。取决于你到底想做什么,你最好有一个能在幕后完成所有这些的框架;e、 g.通过类似的方式分布对象

不过,您应该在问题中提供更多细节——目前您真正指定的唯一一件事是您希望从App1调用App2中的“函数”。有几十种(如果不是几百种的话)方法可以做到这一点,最好的方法取决于你尝试做什么的细节

编辑(根据评论):缺少的不是您想做什么的细节-我很清楚您想从App1中调用App2中的某个方法。更重要的是架构细节-两个客户端都使用什么语言编码,您使用什么库来执行web服务,两个客户端是在同一台机器上还是在不同的机器上(如果是同一台机器,同一个JVM与否),是否存在任何防火墙问题,可能会抑制某些类型的连接,是否有任何办公室政治限制可能会阻止您的选择,是否有任何安全限制可能会这样做(例如,您是否可以公开公开App2方法的功能)。所有这些都将决定什么是可能的,什么是最佳的——因为在一天结束时,所有的网络基本上都是我想从这里使用远程计算机上的资源。如果没有更多的架构细节,您可以通过几十种方式实现这一点

关于exposition:您将创建一个web服务来公开App2的功能,方法与创建任何其他web服务相同(细节取决于您使用的工具/框架)。例如,如果您正在使用支持JSR-181注释的工具,那么您应该在App2中编写一个执行此功能的方法,并使用
@WebMethod
对其进行注释。然后,您将确保如果此方法不是现有webservice类的一部分,那么您将使用
@webservice
对其类进行注释。我认为既然您已经有了一些web服务,您就知道如何编写/定义它们了

至于从App1访问web服务,这可以通过JavaSOAP客户端非常简单地完成。一个工具,例如,可以创建一个存根类来模拟您可以调用的远程服务;或者,您可以使用类似的工具获得更丰富的界面

您当前使用的WS-library是什么?在尝试使用它执行此交互时遇到了哪些错误?

什么是“不工作”的意思?到底发生了什么

首先为App2生成一些客户端代码。您可以从一些简单的Java环境或Servlet中使用它吗。如果这样做有效,当您尝试从App1服务实现代码内部调用它时会发生什么


但是:如果这些是在同一JVM中运行的相关服务,那么您就不能使用java库建立一些更简单的关系。我开发服务的首选方法是首先开发一些有用的Java代码,并确保这些代码能够工作,然后将其“包装”为Web服务。在这种情况下,我有一个可调用的例程,可以作为Java调用。

相同或不同的服务器?相同或不同的背景?相应地编辑您的问题。您正朝着正确的方向前进。我会给你一个我想做的例子。我有两个web服务,可以单独工作,也可以一起进行优化。现在我是这样工作的:我有一个调用app1的客户端,它从app1获取数据并将其发送到app2,然后从app2获取响应数据并将其发送到app1中的另一个函数。我想做的是跳过客户端部分并直接执行它,这样app1就可以直接将数据发送到app2,然后接收一个答案,并执行它需要执行的任何操作。希望这足够了。如果你需要更多的信息,请说出来,谢谢。哦,还有一个关于曝光的问题。我该怎么做?如何创建公开该方法的web服务?提前谢谢你非常感谢你帮了我大忙!!!!我只要检查一下安全性就行了。这是一个错误。我不能让java库成为现实