0

I'm migrating from Jboss 7.1.1 final to Wildfly 8.2 final and I get the following error when I try to start my 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

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>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>

Maybe it appears because I use java 8 ? Any help would be appreciated.

2 Answers2

0

Make sure that your package (WAR or EAR) uses correct JEE API version (for example maven javaee-api package) and doesn't contain JEE class implementations. There is probably javax.servlet.Servlet class in file you are deploying and WildFly decides it is a different class than the one build-in into it. It doesn't even matter if they are exactly the same, the different class loader will throw errors like 'class B extends C' is not an instance of C

user158037
  • 2,659
  • 1
  • 24
  • 27
  • I use in my build wildfly 8.2 server runtime library and jre system library(besides maven and junit). I don't have anything else there. – George-Blackstar7 Jul 15 '15 at 14:28
0

I had the same problem. My problem resolved when i used annotations on my servlets instead of giving servlet mapping in web.xml.

Wildfly8 and upgraded versions uses updated versions of all Api's so it gives error while using mappings just change like the follows

1) Upgrade servlet version to latest one

2) Remove all servlet mappings from 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>server</display-name>

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

3) Annotate your servlets as follows

Example

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

Upgrade all jars or maven dependencies you are using.

This worked for me hope it works for you.

kirti
  • 4,499
  • 4
  • 31
  • 60