0

我正在从 Jboss 7.1.1 final 迁移到 Wildfly 8.2 final,当我尝试启动我的 servlet 时出现以下错误。

        Failed to start service jboss.undertow.deployment.default-  

        server.default-host./myservlet.UndertowDeploymentInfoService:  
          org.jboss.msc.service.StartException in service 
         jboss.undertow.deployment.default-server.default-                                                       
          host./myservlet.UndertowDeploymentInfoService: Failed to start service

      Caused by: java.lang.IllegalArgumentException: UT010009: Servlet 
     randomServlet of type class servlets.randomServlet does not implement 
      javax.servlet.Servlet

网页.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>server</display-name>
<servlet>
 <display-name>randomServlet</display-name>
<servlet-name>randomServlet</servlet-name>
<servlet-class>servlets.randomServlet</servlet-class>
<load-on-startup>1</load-on-startup>  
 </servlet> 
 <servlet-mapping>
  <servlet-name>randomServlet</servlet-name>
<url-pattern>/randomServlet</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>randomServlet</servlet-name>
<url-pattern>randomServlet</url-pattern>
</servlet-mapping>
<listener>
<listener-class>serverFunctions.SessionListener</listener-class>
</listener>
</web-app>

也许它出现是因为我使用 java 8 ?任何帮助,将不胜感激。

4

2 回答 2

0

确保您的包(WAR 或 EAR)使用正确的 JEE API 版本(例如 mavenjavaee-api包)并且不包含 JEE 类实现。您正在部署的文件中可能有javax.servlet.Servlet一个类,WildFly 认为它与内置的类不同。它们是否完全相同都没关系,不同的类加载器会抛出类似的错误'class B extends C' is not an instance of C

于 2015-07-15T13:44:18.920 回答
0

我有同样的问题。当我在我的 servlet 上使用注释而不是在 web.xml 中提供 servlet 映射时,我的问题解决了。

Wildfly8 和升级版本使用所有 Api 的更新版本,因此在使用映射时会出错,如下所示

1) 升级 servlet 版本到最新版本

2) 从 web.xml 中删除所有 servlet 映射

 <?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>server</display-name>

<listener>
<listener-class>serverFunctions.SessionListener</listener-class>
</listener>
</web-app>

3)如下注释您的servlet

例子

@WebServlet("/randomServlet")
public class randomServletextends HttpServlet {
}

升级您正在使用的所有 jars 或 maven 依赖项。

这对我有用,希望它对你有用。

于 2015-07-15T13:49:04.413 回答