【问题标题】:How to use WSDL2Java generated files?如何使用 WSDL2Java 生成的文件?
【发布时间】:2010-02-19 20:11:55
【问题描述】:

我使用axis2-1.5 中的wsdl2java 生成了.java 文件。现在它在这个文件夹结构中生成了文件:src/net/mycompany/www/services/

服务文件夹中的文件是:SessionIntegrationStub 和 SessionIntegrationCallbackHandler。

我现在想使用网络服务。我将 net 文件夹添加到 CLASSPATH 环境变量中。我的 java 文件现在使用以下方式导入 web 服务:

import net.mycompany.www.services;

public class test 
{ 
  public static void main(String[] args) 
  {
    SessionIntegrationStub stub = new SessionIntegrationStub();
    System.out.println(stub.getSessionIntegration("test"));
  } 
} 

现在,当我尝试使用以下代码进行编译时:

javac test.java

我得到:包 net.mycompany.www 不存在。

有什么想法吗?

【问题讨论】:

    标签: java wsdl axis2 wsdl2java


    【解决方案1】:

    如前所述,您需要导入生成的存根类,而不是包

    import net.mycompany.www.services.SessionIntegrationStub;
    

    然后您需要填充您的 XML 请求对象。我不知道您的 WSDL 是什么样的,但例如

    SessionIntegrationStub.SessionRequest req = new SessionIntegrationStub.SessionRequest()
    req.setParamOne(1)
    req.setParamTwo(2)
    

    最后调用网络服务

    SessionIntegrationStub.SessionResponse resp = stub.operationOne(req)
    
    println resp.getAnswer()
    

    注意:上面的 setter 和 getter 对应于您的架构中声明的元素。 SessionRequest 和 SessionResponse 类将对应于您的架构中声明的复杂类型。

    【讨论】:

      【解决方案2】:

      这应该是import net.mycompany.www.services.*;。你错过了星号。

      【讨论】:

      • 我试过了。但是现在它找不到生成的存根。我的标题现在看起来像这样:package net.mycompany.www.services;导入 net.mycompany.services.*,当前文件位于 services 文件夹中。
      【解决方案3】:

      这里的问题是你的包结构。您的 test.java 与您生成的源代码不同。

      您需要将当前文件保持在相同的包结构中,或者在 javac 中提供生成源的完整路径,例如

      javac src/net/mycompany/www/services/.java src/net/mycompany/services/.java

      【讨论】:

        猜你喜欢
        • 2023-03-28
        • 1970-01-01
        • 2014-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-02-21
        • 1970-01-01
        相关资源
        最近更新 更多