如何使用JavaEE调用web服务?

2024-10-03 06:22:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在使用rpclib自动生成WSDL并在Python中实现它。在

然后我想使用JavaEE调用一个具有此WSDL的web服务*,所以我只在Eclipse的creation向导(Indigo 3.7.1 with OEPE)中使用webservice from WSDL选项,但Ant构建失败,出现异常(简而言之):

weblogic.wsee.tools.WsBuildException Error running JAX-WS wsdlc
Caused by java.lang.NoSuchMethodException: javax.xml.bind.annotation.XmlElementRef.required()

我该怎么办?如何使用JavaEE调用web服务?在

*web服务配置为:Apache HTTP Server 2.2.2+mod\wsgi 3.3+Python 2.6.5+rpclib 2.6.1。在


Tags: fromweb选项servicewithwsdlcreationeclipse
1条回答
网友
1楼 · 发布于 2024-10-03 06:22:58

好吧,第二次无意中发现了你的帖子,所以我将详细说明我之前的评论:)。在

首先,我简要介绍一下你的设置:

  • 您有一个工作的webservice和一个指向相应WSDL的URL
  • 您将尝试从另一台机器上的不同javaee项目调用WS-methods

调用WS的常规选项:

  1. 使用Dependency Injection注入WS-reference
  2. 创建您自己的WS存根

第一个选项在您的设置中不起作用,因为DI只在容器管理的环境中工作(见我的评论)。这意味着WS类和执行类必须在同一个容器中(例如,同一个服务器)。在

所以剩下的就是手动生成WS存根。因此,您可以使用您自己的答案中提到的wsimport工具。使用这个工具有几种不同的方法。让我们看看CLI的用法:

  1. 在IDE使用的WS-client的projekt文件夹中导航:%IDE_WORKSPACE%/your project/src
  2. 用板条箱装一个新文件夹,例如stub
  3. 打开此目录中的命令窗口
  4. 执行以下命令:wsimport -keep <http://yourwsdl?wsdl>
  5. 刷新后,您应该会看到几个创建的文件

回到IDE中:

现在您可以通过从生成的service-文件中获取port来使用生成的存根文件连接到WS

public class WsClient {

  public static void main(String[] args) {
    //Create Service
    'GeneratedFile'Service service = new 'GeneratedFile'Service();

    //create proxy
    'GeneratedFile' proxy = service.get'GeneratedFile'Port();

    //invoke
    System.out.println(proxy.yourMethod(yourParam));
  }
}

最后提示:

  • 为了便于移植,请检查生成的文件。在它们的注释中,WSDL文件有时链接到本地副本。只需将其更改回您的WSDL-URL。
    wsimport工具中有一个option直接在导入例程中设置它。在
  • Eclipse有一个名为soapUI的插件,它允许您在Eclipse的GUI中使用wsimport工具。一旦设置好了,它会加速你的工作。在
  • 在使用eclipse开发WS客户机时,我还发现了一个quick start guide。在

希望这有帮助,玩得开心!在

编辑:只是为了澄清:

needed files after wsimport generation

使用wsimport工具后,应该有一个包含如图所示文件的目录。为了使这个例子更清楚,您需要从RequestFileService(这是我的WS操作)获得一个服务,如RequestFileService service = new RequestFileService();,然后您需要在这个服务上有一个端口,比如RequestFile proxy = service.getRequestFilePort();
在此之后,您可以使用端口proxy.yourMethod(yourParam);调用方法调用

相关问题 更多 >