0

我精确地遵循了本教程的每一步(除了跳过第 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());

 }
}

在此处输入图像描述

4

2 回答 2

2

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

于 2013-03-26T12:25:51.343 回答
1

该 URLhttp://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 服务库;一个不仅仅是另一个的更新版本。似乎您以某种方式使用了错误的代码生成器来生成这些类。

于 2013-03-26T16:26:37.263 回答