web-services - 未找到 JAX-WS 多个端点 : Invalid Request

标签 web-services tomcat soap jax-ws

我正在尝试为两个端点实现 Web 服务并收到此错误 部署到 apache toncat 8 后尝试访问服务时出现“404 Not Found:无效请求”。

下面是我的 Web 服务实现类,sun-jaxws.xml 和 web.xml

WebImplementation1.java

package com.ws.soap.services;
import javax.jws.WebService;

@WebService(endpointInterface = "com.ws.soap.services.WebServiceImpl1")
public class WebServiceImpl1  {

    public String printMessage() {
        return "Hello from WebServiceImpl1 ";
    }
}

WebServiceImplementation2.java

package com.ws.soap.services;

import javax.jws.WebService;

@WebService(endpointInterface = "com.ws.soap.services.WebServiceImpl2")
public class WebServiceImpl2 {

    public String displayMessage() {
        return "Hello from WebServiceImpl2 ";
    }
}

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="WebServiceImpl1" implementation="com.ws.soap.services.WebServiceImpl1"
        url-pattern="/impl1" />
    <endpoint name="WebServiceImpl2" implementation="com.ws.soap.services.WebServiceImpl2"
        url-pattern="/impl2" />
</endpoints>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
  http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <display-name>JAX-WS-Tomcat</display-name>
    <listener>
        <listener-class>
            com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
    </listener>

    <servlet>
        <servlet-name>sayhello</servlet-name>
        <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>sayhello</servlet-name>
        <url-pattern>/impl1</url-pattern>
        <url-pattern>/impl2</url-pattern>
    </servlet-mapping>

    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>
</web-app>

最佳答案

使用提供的确切代码(加上从 https://jax-ws.java.net/ 下载的 JAX-WS RI jar),我能够创建一个 Web 应用程序并成功访问服务端点 /impl1/impl2 。请注意<url-pattern><endpoint ... url-pattern="/impl1">指令声明了封闭 Web 应用程序的上下文路径中 JAX-WS 端点的资源路径。

所以,如果 web 应用程序的名称是 MyWebServices ( MyWebServices.war 没有除帖子中描述的其他文件/代码,部署到 Tomcat 8)并且您有 <url-pattern>/impl1</url-pattern>web.xml ,并使用默认 Tomcat 实例监听端口 8080 ,您的 Web 服务端点将是 http://localhost:800/MyWebServices/impl1通过 http://localhost:800/MyWebServices/impl1?wsdl 获取 WSDL

如果您想自定义 Web 应用程序的上下文路径(例如,您不需要 /MyWebServices/...,您可以使用 in this SO question 描述的技术。

例如,我本地的 Tomcat 8 运行在端口 8081 上:

enter image description here

关于web-services - 未找到 JAX-WS 多个端点 : Invalid Request,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36949422/

相关文章:

asp.net - 将 JSON 数组传递到 WCF Web 服务

web-services - 在将 war 文件复制到其中之前,是否必须停止 tomcat 服务器?

c# - 在 android 中访问 C# .net web 服务

java - 如何配置tomcat,以便以前运行的类不会保留在内存中

java - Mule - 已部署项目 - 消息有效负载的类型为 : String

web-services - 使用 fiddler 捕获 Web 服务 xml 请求

wcf - 无法远程访问 WCF 服务

tomcat - 避免字节码注入(inject)Java

java - tomcat SSL请求参数丢失

java - 使用 SOAP WebService 与 Java 问题