0
Ich habe diesen logischen Handler für einen Webdienst, den ich auf den Servlet-Kontext zugreifen muss (über den Web-Service-Kontext denke ich).Warum kann ich einen WebServiceContext nicht in einen logischen Jax-WS-Handler einfügen?
package test;
public class NewLogicalHandler implements LogicalHandler<LogicalMessageContext> {
@Resource
private WebServiceContext context;
Fehler, wenn ich bereit:
<Servlet: "test.ws1" failed to preload on startup in Web application: "web".
java.lang.ClassNotFoundException: test.NewLogicalHandler
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
Wenn ich in den Web-Service injizieren richtige:
@WebService(..stuff...)
@HandlerChain(file = "handler.xml")
public class ws1 {
@Resource
private WebServiceContext context;
Das funktioniert gut.
Die Klasse wurde nicht im Klassenpfad gefunden. Daher schlage ich vor, dass Sie sicherstellen müssen, dass sie sich zuerst im Klassenpfad befindet. – gigadot
Es ist. Denn wenn ich @Resouce entferne, wird es in Ordnung gebracht und der Handler kann aufgerufen werden. Ich denke, dass es eine Reihenfolge des Ladenproblems sein kann? – OldProgrammer
'ClassNotFoundException' tritt auf, wenn eine Klasse vom Klassenladeprogramm nicht unter Klassenpfad gefunden wird. In diesem Fall wird' test.NewLogicalHandler' nicht gefunden. Dies geschieht normalerweise, wenn Sie eine War-Anwendung erstellen, die Abhängigkeit jedoch nicht in der WAR-Datei enthalten ist. Oder Sie verwenden einen Klassenlader, der 'test.NewLogicalHandler' in einigen Ihrer jar-Dateien unter ClassParth nicht findet. Ich kann mir keinen anderen Grund vorstellen. – gigadot