2013-07-16 2 views
3

Я пытаюсь настроить экземпляр embedded jetty 9, который собирает аннотации из .war-файла.embedded jetty 9 classNotFound для AnnotationConfiguration в WebAppContext.doStart

До сих пор ему удавалось запустить, например. GeoServer.war (установив ExtractWars в True), но я получаю ClassNotFound в классе AnnotationsConfiguration, когда он берет WebChat.war, который содержит аннотированный сервлет.

В примере войны, я добавил «метаданных полный =„ложь“» его web.xml, Также я добавил следующий бит к причалу сервера

ContextHandlerCollection mHandlers = new ContextHandlerCollection(); 

    String mWebAppDir = ... ; 
    WebAppProvider mAppProvider = new WebAppProvider(); 
    mAppProvider.setMonitoredDirName(mWebAppDir); 
    mAppProvider.setDefaultsDescriptor(null); 
    mAppProvider.setScanInterval(0); 
    mAppProvider.setExtractWars(true); 
    mAppProvider.setConfigurationClasses(new String[]{ 
    AnnotationConfiguration.class.toString(), 
    WebInfConfiguration.class.toString(), 
    PlusConfiguration.class.toString(), 
    FragmentConfiguration.class.toString(),    
    }); 

    DeploymentManager mDeployMgr = new DeploymentManager();  
    mDeployMgr.addAppProvider(mAppProvider); 
    mDeployMgr.setContexts(mHandlers);  

    /* Setup & Run server */ 
    mServer.addBean(mDeployMgr); 
    mServer.setHandler(mHandlers); 
    mServer.start(); 

я добавил все банки Jetty9 (jetty-distribution-9.0.3.v20130506), включая jar 'websocket-core-9.0.0.M2.jar' для проекта сервера причалов. IDE знает AnnotationConfiguration класса, но когда молы обрабатывает войну файл, он поставляется с:

2013-07-16 14:05:36.731:INFO:oejs.Server:main: jetty-9.0.3.v20130506 
2013-07-16 14:05:36.753:INFO:oejdp.ScanningAppProvider:main: 
Deployment monitor [file:/C:/..../webapps/] at interval 0 
2013-07-16 12:57:38.542:WARN:oejw.WebAppContext:main: 
Failed startup of context [email protected]{/WebChat,null,null} 
{C:\....\webapps\WebChat.war} 

java.lang.ClassNotFoundException: class org.eclipse.jetty.annotations.AnnotationConfiguration 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:79) 
    at org.eclipse.jetty.webapp.WebAppContext.loadConfigurations(WebAppContext.java:919) 
    at org.eclipse.jetty.webapp.WebAppContext.preConfigure(WebAppContext.java:420) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:489) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.deploy.bindings.StandardStarter.processBinding(StandardStarter.java:39) 
    at org.eclipse.jetty.deploy.AppLifeCycle.runBindings(AppLifeCycle.java:186) 
    at org.eclipse.jetty.deploy.DeploymentManager.requestAppGoal(DeploymentManager.java:495) 
    at org.eclipse.jetty.deploy.DeploymentManager.addApp(DeploymentManager.java:146) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.fileAdded(ScanningAppProvider.java:175) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider$1.fileAdded(ScanningAppProvider.java:64) 
    at org.eclipse.jetty.util.Scanner.reportAddition(Scanner.java:605) 

WebChat.war содержания выглядит следующим образом:

\chat.html 
\css\style.css 
\js\jquery-1.3.2.js 
\META-INF\MANIFEST.MF 
\WEB-INF\classes 
\WEB-INF\lib 
\WEB-INF\web.xml 
\WEB-INF\classes\jettytest 
\WEB-INF\classes\jettytest\Feature.class 
\WEB-INF\classes\jettytest\FeatureWebSocket.class 
\WEB-INF\classes\jettytest\FeatureWebSocketServlet.class 
\WEB-INF\lib\websocket-api-9.0.3.v20130506.jar 
\WEB-INF\lib\websocket-common-9.0.3.v20130506.jar 
\WEB-INF\lib\websocket-core-9.0.0.M2.jar 
\WEB-INF\lib\websocket-server-9.0.3.v20130506.jar 
\WEB-INF\lib\websocket-servlet-9.0.3.v20130506.jar 

Надеясь получить ключ как решить проблему с классной загрузкой.
Заранее спасибо

ответ

2

Спасибо, что посмотрели мой вопрос.

Я нашел проблему;

Я был запущен сервер пристани только на порт 8443, а не на 8080. Но файл webchat.html инициализируется с помощью

$(document).ready(
function() { 
     ws = new WebSocket("ws://localhost:8443/WebChat/map"); 

Но он должен быть протокол WSS, так как это безопасно через 8443. т.е.

$(document).ready(
function() { 
     ws = new WebSocket("wss://localhost:8443/WebChat/map"); 

Оказывается, она работает без установки setConfigurationClasses в

mAppProvider.setConfigurationClasses(new String[]{ 
    AnnotationConfiguration.class.toString(), 
    WebInfConfiguration.class.toString(), 
    PlusConfiguration.class.toString(), 
    FragmentConfiguration.class.toString(),    
    }); 

Надеюсь, кому-то это поможет.

Смежные вопросы