为啥我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误

Posted

技术标签:

【中文标题】为啥我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误【英文标题】:Why i cannot access to services CXF in tomcat : HTTP Status 500 - Internal Server Error为什么我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误 【发布时间】:2019-07-21 03:41:55 【问题描述】:

当我在 tomcat 服务器上运行它时,它在服务页面中返回以下错误,我无法访问 WSDL 和 SOAP

我有这个错误:

HTTP 状态 500 - 内部服务器错误

键入异常报告

servlet [CXFServlet] 的“Servlet.init ()”消息引发异常

描述服务器遇到阻止它的内部错误 从满足要求。

异常 javax.servlet.ServletException: "Servlet.init()" for servlet [CXFServlet] 引发异常 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:491) org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:668) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:764) org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1388) org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) java.lang.Thread.run(Thread.java:748)

文件内容:

cxf-servlet.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jaxws="http://cxf.apache.org/jaxws"
    xmlns:cxf="http://cxf.apache.org/core"
    xmlns:soap="http://cxf.apache.org/bindings/soap"
    xsi:schemaLocation="http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd 
    http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd http://cxf.apache.org/bindings/soap 
    http://cxf.apache.org/schemas/configuration/soap.xsd 
    http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd">

  <jaxws:server id="hallo" address="/hallo">
  <jaxws:serviceBean>
   <bean class="CXF-Maven.DemoClass"/>
  </jaxws:serviceBean>
  </jaxws:server>

</beans>

http://localhost:8080/ 工作正常 但是http://localhost:8080/CXF-Maven/services我过不去

【问题讨论】:

您是否发布了服务器返回的完整堆栈跟踪?我认为在您粘贴的那个下面应该有一些嵌套异常,这将引导您(和我们)了解 CXF servlet 崩溃的原因。 我是 JavaEE 的新手,我无法理解返回的确切含义?我的文件有错误吗? java.lang.Thread.run(Thread.java:748) 行之后通常会出现root cause 行,然后是另一个异常。检查此处发布的示例堆栈***.com/questions/20851236/… 除非在您的情况下它是所有服务器返回/日志。 【参考方案1】:

当我在文件 pom.xml 上使用旧版本的依赖项时,我遇到了问题 将文件配置pom.xml 更新为新版本现在一切正常。谢谢

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.demowb</groupId>
  <artifactId>demowb</artifactId>
  <packaging>war</packaging>
  <version>0.0.1-SNAPSHOT</version>
  <name>cxfweb Maven Webapp</name>
  <url>http://maven.apache.org</url>
  <properties>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
    </properties>
  <dependencies>
  <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>3.1.0</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-frontend-jaxws -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-frontend-jaxws</artifactId>
            <version>3.2.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.cxf/cxf-rt-transports-http -->
        <dependency>
            <groupId>org.apache.cxf</groupId>
            <artifactId>cxf-rt-transports-http</artifactId>
            <version>3.2.4</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.5.RELEASE</version>
        </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <build>
    <finalName>demoweb</finalName>
  </build>
</project>

【讨论】:

以上是关于为啥我无法访问 tomcat 中的服务 CXF:HTTP 状态 500 - 内部服务器错误的主要内容,如果未能解决你的问题,请参考以下文章

项目部署到tomcat上,tomcat能正常启动,为啥却无法访问?

为啥我无法访问我的控制器?

为啥通过公网ip访问不了tomcat中的资源呢?

无法从手机访问本地网络中的Tomcat服务器

linux服务器上tomcat部署web项目,部署成功后访问不了,提示页面不存在是为啥?

带有tomcat和cxf-servlet的spring-boot