2017-03-14 3 views
0

Ich habe ein dynamisches Web-Projekt in Eclipse. Ich habe einige neue Pakete im Projekt erstellt und einige Servlets verschoben. Jetzt funktionieren die Servlets nicht mehr, da der Pfad in der Datei web.xml nicht aktualisiert wird. Es wird die folgende Ausnahme werfenAutomatisch Servlet-Klasse in web.xml aktualisieren

Mar 14, 2017 10:45:12 AM org.apache.catalina.core.ApplicationContext log 
INFO: Marking servlet ServletName as unavailable 
Mar 14, 2017 10:45:12 AM org.apache.catalina.core.StandardWrapperValve invoke 
SEVERE: Allocate exception for servlet ServletName 
java.lang.ClassNotFoundException: com.package.database.ServletName 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:415) 
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:397) 
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118) 
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1062) 
    at org.apache.catalina.core.StandardWrapper.allocate(StandardWrapper.java:813) 
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:135) 
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:164) 
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:462) 
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:164) 
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:100) 
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:562) 
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 
    at com.jamonapi.http.JAMonTomcatValve.invoke(JAMonTomcatValve.java:67) 
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:395) 
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:250) 
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:188) 
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:302) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603) 
    at java.lang.Thread.run(Thread.java:722) 

Die Ausnahmen sagt alles, ist die <servlet-class> in der Datei web.xml für das Servlet nicht korrekt. Wenn ich den Pfad aktualisiere, wird es funktionieren, aber es gibt ziemlich wenige Servlets, die ich bewegt habe.

Ist es möglich, die gesamte web.xml-Datei automatisch zu aktualisieren, um alle <servlet-class> zu beheben?

+0

Vielleicht verwechseln Sie "Pfadnamen" mit "Klassennamen"? Eine ganz andere Art von Dingen! –

+0

aktualisiert ... '' so heißt es in web.xml – Ana

Antwort

2

Ich glaube nicht, Eclipse automatisch alle Pfade aktualisieren können, aber wenn Sie Tomcat 7.0 verwenden, dann haben Sie eine Abhilfe, wie here

Tomcat 7 ist ein Servlet 3.0 kompatiblen Container. Seit Servlet 3.0 können die Servlets von der Annotation @WebServlet für die Klasse konfiguriert werden, ohne dass ein web.xml-Konfigurationseintrag erforderlich ist. Sehen Sie sich die Servlet-Klasse genauer an, die Sie gerade erstellt haben. Auf ihr befindet sich eine @ WebServlet-Annotation, die alle Informationen enthält, die Sie im Assistenten für neue Servlets angegeben haben.

Effektiv diese neue Art der Konfiguration von Servlets

@WebServlet("/hello") 
public class HelloServlet extends HttpServlet {} 

tut genau die gleiche wie dieses Erbe Art und Weise zu konfigurieren, Servlets

<servlet> 
    <servlet-name>helloServlet</servlet-name> 
    <servlet-class>com.example.HelloServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>helloServlet</servlet-name> 
    <url-pattern>/hello</url-pattern> 
</servlet-mapping> 

Sie die Dynamic Web-Modul Version 3.0 ändern müssen in Projekt Facets Abschnitt der Eigenschaften des Projekts, wenn es weniger als 3.0 ist.

+0

Ich benutze Tomcat 7.0, aber das ist wieder ein großer Job, weil ich jedes Servlet, @ @ WebServlet Annotation hinzufügen muss wird wahrscheinlich web.xml manuell aktualisieren. Danke für deine Hilfe trotzdem – Ana

Verwandte Themen