使用eclipse和axis 2生成第一个Web服务客户端的问题

时间:2013-03-25 22:55:43

标签: java eclipse axis2

我精确地遵循了this tutorial的每一步(除了跳过第4步,因为我现在只想让它在eclipse中工作)。

我小心翼翼地使用每个软件的确切版本(eclipse helios,axis 2 1.5.2等)。我在mac os x 10.7.5上运行它,现在在教程中的Windows上运行。

无论如何,当我去创建测试客户端时,一切顺利,直到第5步。我可以通过向导来创建客户端 - 但只有当我将其指向此URL时:

localhost:8080/MyFirstWebService/services/FirstWebSertice?wsdl

而不是教程中的这个

http://localhost:8080/axis2/services/FirstWebService?wsdl

之后,它不会生成两个名为FirstWebServiceStub.java和FirstWebServiceCallbackHandler.java的类 - 而是生成一些如下图所示的类。

这是一个主要的差异吗?我做错了什么吗?我应该如何从教程中翻译此代码以使其使用生成的类?

package com.sencide;

import java.rmi.RemoteException;
import com.sencide.FirstWebServiceStub.AddTwoNumbers;
import com.sencide.FirstWebServiceStub.AddTwoNumbersResponse;

public class TestClient {

 public static void main(String[] args) throws RemoteException {

  FirstWebServiceStub stub = new FirstWebServiceStub();
  AddTwoNumbers atn = new AddTwoNumbers();
  atn.setFirstNumber(5);
  atn.setSecondNumber(7);
  AddTwoNumbersResponse res = stub.addTwoNumbers(atn);
  System.out.println(res.get_return());

 }
}

enter image description here

2 个答案:

答案 0 :(得分:2)

FirstWebServiceLocator是由Axis 1.x生成的类,但教程中的代码需要Axis2生成的代码。

答案 1 :(得分:1)

URL http://localhost:8080/axis2/services/FirstWebService?wsdl将由本教程第4步中安装的服务处理。由于您跳过了该步骤,因此该URL无效。

在正常的tomcat行为下,URL的“/ axis2”部分引用了tomcat中部署的特定Web应用程序(WAR文件)。在这种情况下,从tomcat的角度来看,Web应用程序是axis2.war。

URL的“services / FirstWebSertice”部分引用在Axis2环境中运行的特定Axis2服务(AAR文件)。

正如@ andreas-veithen所指出的,看起来项目资源管理器映像中的样板java类是由Axis而不是Axis2生成的。 Axis和Axis2实际上是两个不同的Web服务库;一个不仅仅是另一个版本的更高版本。您似乎以某种方式使用了错误的代码生成器来生成这些类。