java - Axis 示例地址簿异常

标签 java web-services ubuntu wso2 apache-axis

我有 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 命令吗?

由于它不起作用,我使用以下方法构建了 jar,

mvn clean install

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

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

“在 jar 中找不到带 @WebService 注释的服务实现:file:/home/dodan/Programs/axis2-1.6.0/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 中。

有很多相关教程。

关于java - Axis 示例地址簿异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26750394/

相关文章:

apache - 启动 Apache 后 Docker 容器关闭

java - 需要帮助在排序的 LinkedList 中添加节点

java - 在方法内创 build 置为新对象的实例变量是否比在方法内创建局部变量节省内存?

java - 从二维数组抛出异常后继续

php - 网站到 POS 打印机

web-services - 使用 WSSpringServlet 的带有 SOAP Web 服务的 Spring MVC 应用程序

python - Virtualenv、无站点包、sys.path

java - System.arraycopy 截断字节

java - 接收 HTTP 传输错误 : javax.net.ssl.SSLHandshakeException : sun. security.validator.ValidatorException:PKIX 路径构建失败

linux - 使用 dup2 的 Ubuntu Linux C 编程中的多个管道