java - sun-jaxws.xml 中的 JAX-WS 多端点

标签 java web-services jax-ws

刚开始使用 JAX-WS。我在一个 WAR 文件中创建了 2 个测试 Web 服务,如下所示....

package com.djs;

import javax.jws.WebService;

@WebService()
public class AddTwoInts {

    public int performAdd(int firstNum, int secondNum) {
        return firstNum + secondNum;
    }
}

还有……

package com.djs;

import javax.jws.WebService;

@WebService()
public class SayHello {

    public String sayHello(String inwards) {
        return "Hello " + inwards;
    }
}

这是我的 web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
                             http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">

    <listener>
        <listener-class>
            com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>jaxws</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>jaxws</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

</web-app>

这是 sun-jaxws.xml

<?xml version="1.0" encoding="UTF-8"?>
<endpoints xmlns='http://java.sun.com/xml/ns/jax-ws/ri/runtime' version='2.0'>  
    <endpoint name='performAdd' implementation='com.djs.AddTwoInts' url-pattern='/AddTwoInts' />
    <endpoint name='sayHello' implementation='com.djs.SayHello' url-pattern='/SayHello' />
</endpoints> 


我部署到 Tomcat 7 并使用 http://localhost:8080/MyApp/AddTwoInts?wsdl 获取 AddTwoInts 的 WSDL OK....但是当我执行 http://localhost :8080/MyApp/SayHello?wsdl 我收到 404 页面未找到错误....

感谢任何建议。

最佳答案

戴夫,

我猜您缺少两个端点的 servlet 映射。

将以下内容添加到您的 web.xml 中,然后重试。让我知道这是否解决了问题。

<servlet>
    <servlet-name>AddTwoInts</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>AddTwoInts</servlet-name>
    <url-pattern>/AddTwoInts</url-pattern>
</servlet-mapping>

<servlet>
    <servlet-name>SayHello</servlet-name>
    <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>SayHello</servlet-name>
    <url-pattern>/SayHello</url-pattern>
</servlet-mapping>

关于java - sun-jaxws.xml 中的 JAX-WS 多端点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6172463/

相关文章:

web-services - 通过 https 的 Tibco SOAP 请求 - SSL 证书验证问题

java - 如何使用restcontroller在spring restful webservice中记录传入的json请求?

java - CXF 生成的 WSDL 不包含 WS-SecurityPolicy 定义

java - 在jboss中使用jax-ws

java - 无法获取 POST 请求正文

java - 为什么 "multi foo"解析值是 "(multi multi2) foo"

java - 如何使用添加到 netbeans 项目的 .jar 库中的类?

java - java是如何处理多线程的?线程多于进程

web-services - 新网站域的新 SSL 证书

java - 使用 JAX-WS for SOAP 的 WSDL 之外的信息?