Axis Sample AddressBook异常

时间:2014-11-05 05:37:15

标签: java web-services ubuntu wso2 axis2

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

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

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

  1. 有人可以将其转换为ubuntu命令吗?
  2. 由于它不起作用,我使用

    构建了jar
    mvn clean install
    

    然后我将jar文件复制到repository2下的serverjars目录下的servicejars目录

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

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

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

    然而,axis2服务器仍然是sys,没有webservices注释 有人可以说我是否遗漏了什么?

    这是我改变的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();
        }
    }
    }
    

1 个答案:

答案 0 :(得分:1)

您正在使用Windows语法来处理环境变量。

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

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

有很多关于它的教程。