我精确地遵循了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());
}
}
答案 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服务库;一个不仅仅是另一个版本的更高版本。您似乎以某种方式使用了错误的代码生成器来生成这些类。