0

Jboss 7.1.1 final から Wildfly 8.2 final に移行していますが、サーブレットを起動しようとすると次のエラーが発生します。

        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>

Java 8 を使用しているために表示されるのでしょうか。どんな助けでも大歓迎です。

4

2 に答える 2

0

私も同じ問題を抱えていました。web.xml でサーブレット マッピングを指定する代わりに、サーブレットで注釈を使用すると、問題が解決しました。

Wildfly8 およびアップグレードされたバージョンは、すべての Api の更新されたバージョンを使用するため、マッピングの使用中にエラーが発生します。次のように変更するだけです

1) サーブレットのバージョンを最新のものにアップグレードする

2) 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) 次のようにサーブレットに注釈を付けます。

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

使用しているすべての jar または maven 依存関係をアップグレードします。

これは私にとってはうまくいきました。

于 2015-07-15T13:49:04.413 に答える
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 に答える