首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用JavaEE调用web服务?

如何使用JavaEE调用web服务?
EN

Stack Overflow用户
提问于 2012-03-12 07:54:55
回答 1查看 3.6K关注 0票数 0

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

然后,我想使用JavaEE调用一个具有此WSDL的Web服务*,所以我只在EclipseIndigo3.7.1和中的创建向导中使用了 wizard 选项,但是,除了异常之外,构建失败了(简而言之):

代码语言:javascript
复制
weblogic.wsee.tools.WsBuildException Error running JAX-WS wsdlc
Caused by java.lang.NoSuchMethodException: javax.xml.bind.annotation.XmlElementRef.required()

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

* web服务配置为:ApacheHTTPServer2.2.2+ mod_wsgi 3.3 +Python2.6.5+rpclib2.6.1。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-03-13 23:45:59

好的,第二次偶然发现了你的帖子,所以我将详细阐述我之前的评论:)。

首先,我要重述一下你的安排:

  • 您有一个工作的WSDL服务和一个指向相应WSDL的URL
  • 您将尝试从不同机器上的不同Java项目调用WS方法

调用WS的一般选项:

  1. 使用依赖注入注入WS引用
  2. 创建您自己的WS存根

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

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

  1. 在IDE使用的WS客户端的projekt文件夹中导航:%IDE_WORKSPACE%/your project/src
  2. 装入一个新文件夹,例如stub
  3. 在此目录中打开命令窗口
  4. 执行follwing命令:wsimport -keep <http://yourwsdl?wsdl>
  5. 刷新后,您将看到几个创建的文件。

回到IDE中:

现在,您可以使用生成的存根文件连接到WS,方法是从生成的port -file中获取一个

代码语言:javascript
复制
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即可。 AFAIK在选项工具中有一个wsimport,可以在导入例程中直接设置它。
  • Eclipse有一个名为soapUI的插件,它允许您在Eclipse之外的GUI中使用wsimport工具。一旦建立起来,就会加速你的工作。
  • 我还在用eclipse开发WS客户端时找到了一个快速启动指南

希望这能帮上忙,玩得开心!

编辑:只是为了澄清:

在使用wsimport工具之后,您应该有一个目录,其中包含如图像中所示的文件。为了清楚地说明这个例子,您需要从RequestFileService (这是我的WS操作)获得一个服务(这是我的WS操作),比如RequestFileService service = new RequestFileService();;在此之后,您将需要像RequestFile proxy = service.getRequestFilePort();这样的服务端口。

之后,可以使用端口proxy.yourMethod(yourParam);调用方法调用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9663420

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档