【问题标题】:Soap Web Service Not Deployed in Tomcat 6Tomcat 6 中未部署 Soap Web 服务
【发布时间】:2019-08-05 20:12:37
【问题描述】:

我正在通过 eclipse 在 Tomcat 6 中创建和部署一个 SOAP 网络服务。

以下是我的代码。

界面

package com.hcl.anil;

import javax.jws.WebService;

@WebService
public interface CalWebService
{
    int add(int a,int b);
}

实现类

package com.hcl.anil;

import javax.jws.WebService;

@WebService(endpointInterface="com.hcl.anil.CalWebService", portName="calWebServicePort",serviceName="calWebService")
public class CalWebServiceImpl implements CalWebService
{

    @Override
    public int add(int a, int b)
    {
        return a+b;
    }

}

Web.xml

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

<listener>
        <listener-class>
                com.sun.xml.ws.transport.http.servlet.WSServletContextListener
        </listener-class>
    </listener>
    <servlet>
        <servlet-name>CalWebService</servlet-name>
        <servlet-class>
            com.sun.xml.ws.transport.http.servlet.WSServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>CalWebService</servlet-name>
        <url-pattern>/CalWebService</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="CalWebService"
      implementation="com.hcl.anil.CalWebServiceImpl"
      url-pattern="/CalWebService"/>
</endpoints>

当我尝试在 tomcat6 中部署 web 服务时,出现以下错误。

SEVERE: Error configuring application listener of class com.sun.xml.ws.transport.http.servlet.WSServletContextListener
java.lang.NoClassDefFoundError: com/sun/istack/localization/LocalizableMessageFactory$ResourceBundleSupplier
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2854)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(Unknown Source)
    at java.security.SecureClassLoader.defineClass(Unknown Source)
    at org.apache.catalina.loader.WebappClassLoader.findClassInternal(WebappClassLoader.java:2854)
    at org.apache.catalina.loader.WebappClassLoader.findClass(WebappClassLoader.java:1159)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1647)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    at java.lang.Class.getDeclaredConstructors0(Native Method)
    at java.lang.Class.privateGetDeclaredConstructors(Unknown Source)
    at java.lang.Class.getConstructor0(Unknown Source)
    at java.lang.Class.newInstance(Unknown Source)
    at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4150)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4705)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardHost.start(StandardHost.java:840)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1057)
    at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
    at org.apache.catalina.core.StandardService.start(StandardService.java:525)
    at org.apache.catalina.core.StandardServer.start(StandardServer.java:754)
    at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
Caused by: java.lang.ClassNotFoundException: com.sun.istack.localization.LocalizableMessageFactory$ResourceBundleSupplier
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    ... 33 more

我在我的项目 lib 文件夹中包含了以下 jar,并且 jaxb-impl-2.2.3 jar 实际上有说缺失的类。但它没有 $ResourceBundleSupplier 类的一部分。

lib文件夹中的jar如下。

gmbal-api-only,ha-api,jaxb-api-2.2.3,jaxb-core,jaxb-impl,jaxb-impl-2.2.3, jaxb-xjc-2.2.3,jaxws-api,jaxws-rt,management-api,policy,stax-ex,streambuffer

我已经坚持了将近一天,我彻底搜索并尝试了许多解决方案。如果有人可以提供帮助,非常感谢。

为了更清楚地说明,实际上我正在关注本教程。 https://www.youtube.com/watch?v=mGlPXKJo_6U

提前致谢。

【问题讨论】:

    标签: java eclipse web-services tomcat soap


    【解决方案1】:

    这确实很麻烦,我也遇到了类似的问题。您可以使用以下依赖项来解决问题,尽管您可能需要一些试错工作才能真正完成这项工作,因为可能还有其他一些依赖项。

    将这些包含在 pom 文件中并尝试一下。我使用 Tomcat 8.5.38,但也可以使用 Tomcat 6。

         <dependency>
            <groupId>org.glassfish.ha</groupId>
            <artifactId>ha-api</artifactId>
            <version>3.1.9</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>jaxws-rt</artifactId>
            <version>2.2.8</version>
        </dependency>
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-core</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.stream.buffer</groupId>
            <artifactId>streambuffer</artifactId>
            <version>1.5.3</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.bind</groupId>
            <artifactId>jaxb-impl</artifactId>
            <version>2.2.7</version>
        </dependency>
        <dependency>
            <groupId>com.sun.xml.ws</groupId>
            <artifactId>policy</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.glassfish.gmbal</groupId>
            <artifactId>gmbal-api-only</artifactId>
            <version>3.2.0-b003</version>
        </dependency>
    

    【讨论】:

      猜你喜欢
      • 2023-03-30
      • 2011-01-31
      • 2016-04-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2017-10-24
      • 2013-10-15
      相关资源
      最近更新 更多