如何使用WSDL2Java生成的文件?

时间:2010-02-19 20:11:55

标签: java wsdl axis2 wsdl2java

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

services文件夹中的文件是:SessionIntegrationStub和SessionIntegrationCallbackHandler。

我现在想要使用网络服务。我将net文件夹添加到CLASSPATH环境变量中。我的java文件现在使用:

导入webservice
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不存在。

有什么想法吗?

3 个答案:

答案 0 :(得分:2)

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

import net.mycompany.www.services.SessionIntegrationStub;

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

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

最后调用Web服务

SessionIntegrationStub.SessionResponse resp = stub.operationOne(req)

println resp.getAnswer()

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

这里的问题是你的包结构。您的test.java位于不同的包中,然后是您生成的源。

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

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