Axis示例通讯簿异常



我有两个问题我正在尝试运行轴2样本。在指令文件的最后一部分,有一行它说,应该在终端(ubuntu)中运行,不工作

java -Djava.ext.dirs=%AXIS2_HOME%lib;%JAVA_HOME%jrelibext -cp target/classes org.apache.axis2.jaxws.addressbook.AddressBookClient.class

我不是这个领域的专家,也不熟悉ubuntu命令。我觉得这不是ubuntu命令我得到的错误是,"无效作业"

  1. 有人能把它转换成ubuntu命令吗

由于它不起作用,我用制作了这个罐子

mvn clean install

然后,我将jar文件复制到存储库下的servicejars目录中,在axis2 中

然后axis服务器说jar不包含WebServices注释

"在jar中找不到@WebService注释的服务实现:file:/home/dodan/Programs/axis2-1.60/repository/servicejars/jaxws-addressbook-1.6.0-client.jar。服务部署失败。"

所以我把它添加到原始的java文件中,该文件没有注释(也没有导入)

然而axis2服务器仍然认为没有webservices注释2.有人能告诉我是否遗漏了什么吗?

这是我更改的java文件

import javax.xml.namespace.QName;
import javax.xml.ws.BindingProvider;
import javax.xml.ws.Dispatch;
import javax.xml.ws.Service;
import javax.jws.WebService;
import java.util.Map;
/**
 * Simple JAX-WS Dispatch client for the address book service implementation.
 */
@WebService
public class AddressBookClient {
    private static String NAMESPACE = "http://addressbook.jaxws.axis2.apache.org";
    private static QName QNAME_SERVICE = new QName(NAMESPACE, "service");
    private static QName QNAME_PORT = new QName(NAMESPACE, "port");
    private static String ENDPOINT_URL = "http://localhost:8080/axis2/services/AddressBookImplService.AddressBookImplPort";
private static String ADD_ENTRY_BODY_CONTENTS = 
    "<ns1:addEntry xmlns:ns1="http://addressbook.jaxws.axis2.apache.org">" + 
      "<ns1:firstName xmlns="http://addressbook.jaxws.axis2.apache.org">myFirstName</ns1:firstName>" + 
      "<ns1:lastName xmlns="http://addressbook.jaxws.axis2.apache.org">myLastName</ns1:lastName>" + 
      "<ns1:phone xmlns="http://addressbook.jaxws.axis2.apache.org">myPhone</ns1:phone>" + 
      "<ns1:street xmlns="http://addressbook.jaxws.axis2.apache.org">myStreet</ns1:street>" + 
      "<ns1:city xmlns="http://addressbook.jaxws.axis2.apache.org">myCity</ns1:city>" + 
      "<ns1:state xmlns="http://addressbook.jaxws.axis2.apache.org">myState</ns1:state>" + 
    "</ns1:addEntry>";
private static String FIND_BODY_CONTENTS = 
    "<ns1:findByLastName xmlns:ns1="http://addressbook.jaxws.axis2.apache.org">" +
      "<ns1:lastName xmlns="http://addressbook.jaxws.axis2.apache.org">myLastName</ns1:lastName>" +        
    "</ns1:findByLastName>";
public static void main(String[] args) {
    try {
        System.out.println("AddressBookClient ...");
        Service svc = Service.create(QNAME_SERVICE);
        svc.addPort(QNAME_PORT, null, ENDPOINT_URL);
        // A Dispatch<String> client sends the request and receives the response as 
        // Strings.  Since it is PAYLOAD mode, the client will provide the SOAP body to be 
        // sent; the SOAP envelope and any required SOAP headers will be added by JAX-WS.
        Dispatch<String> dispatch = svc.createDispatch(QNAME_PORT, 
                String.class, Service.Mode.PAYLOAD);
        // Invoke the Dispatch
        System.out.println(">> Invoking sync Dispatch for AddEntry");
        String response = dispatch.invoke(ADD_ENTRY_BODY_CONTENTS);
        System.out.println("Add Entry response: " + response);
        System.out.println(">> Invoking Dispatch for findByLastName");
        String response2 = dispatch.invoke(FIND_BODY_CONTENTS);
        System.out.println("Find response: " + response2);
    } catch (Exception e) {
        System.out.println("Caught exception: " + e);
        e.printStackTrace();
    }
}
}

您对环境变量使用的是Windows语法。

您将使用$AXIS_HOME而不是%AXIS_HOME%

也就是说,现在你不需要任何版本的Axis来了解web服务。JAX-WS实现存在于Java 6及更新版本的JDK中。

有很多关于它的教程。

最新更新