2013-06-01 1 views
1

Я работаю над веб-приложением Java .war, обслуживаемым причалом. Я занимаюсь интеграцией Shiro для аутентификации/авторизации пользователей. Все шло хорошо, пока не пришло время подключить сервер MySql к сфере Jdbc. После добавления jetty-web.xml в первый раз у меня было много проблем с моим встроенным сервером причала. Жалобы на WebAppContext не являются тем же классом, что и WebAppContext.Ошибка инициализации Jetty/Shiro 2013-06-01 03: 37: 23.574: WARN: oejj.ObjectMBean: main:

Я просто удалил причал и все ссылки на него, чтобы решить проблемы с совпадением класса. Мой webapp теперь загружается, а поддержка MySql работает даже, но я получаю массу предупреждений. Похоже, они приходят откуда-то в причал, и я не уверен, как отследить проблему. Любая помощь в выяснении того, откуда это происходит, будет оценена по достоинству. Вот пример предупреждений, которые я получаю. Кодовые фрагменты ниже.

2013-06-01 03:55:36.715:WARN:oejj.ObjectMBean:main: 
java.lang.NoClassDefFoundError: org/eclipse/jetty/jmx/ObjectMBean 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:420) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) 
    at org.eclipse.jetty.jmx.ObjectMBean.mbeanFor(ObjectMBean.java:133) 
    at org.eclipse.jetty.jmx.MBeanContainer.beanAdded(MBeanContainer.java:146) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:229) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:210) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.manage(ContainerLifeCycle.java:340) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:89) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:115) 
    at org.eclipse.jetty.server.session.SessionHandler.doStart(SessionHandler.java:106) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:115) 
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:765) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:275) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1321) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:724) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:279) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:193) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.updateBeans(ContainerLifeCycle.java:718) 
    at org.eclipse.jetty.server.handler.HandlerCollection.setHandlers(HandlerCollection.java:89) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.setHandlers(ContextHandlerCollection.java:165) 
    at org.eclipse.jetty.server.handler.HandlerCollection.addHandler(HandlerCollection.java:155) 
    at org.eclipse.jetty.deploy.bindings.StandardDeployer.processBinding(StandardDeployer.java:41) 
    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) 
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528) 
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391) 
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:145) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:557) 
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:232) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108) 
    at org.eclipse.jetty.server.Server.start(Server.java:342) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:290) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1236) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1160) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.jetty.start.Main.invokeMain(Main.java:509) 
    at org.eclipse.jetty.start.Main.start(Main.java:651) 
    at org.eclipse.jetty.start.Main.main(Main.java:99) 
Caused by: 
java.lang.ClassNotFoundException: org.eclipse.jetty.jmx.ObjectMBean 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:420) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382) 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(Unknown Source) 
    at java.security.SecureClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.defineClass(Unknown Source) 
    at java.net.URLClassLoader.access$100(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.net.URLClassLoader$1.run(Unknown Source) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:420) 
    at org.eclipse.jetty.webapp.WebAppClassLoader.loadClass(WebAppClassLoader.java:382) 
    at org.eclipse.jetty.util.Loader.loadClass(Loader.java:100) 
    at org.eclipse.jetty.jmx.ObjectMBean.mbeanFor(ObjectMBean.java:133) 
    at org.eclipse.jetty.jmx.MBeanContainer.beanAdded(MBeanContainer.java:146) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:229) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:210) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.manage(ContainerLifeCycle.java:340) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:89) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:115) 
    at org.eclipse.jetty.server.session.SessionHandler.doStart(SessionHandler.java:106) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.handler.ScopedHandler.doStart(ScopedHandler.java:115) 
    at org.eclipse.jetty.server.handler.ContextHandler.startContext(ContextHandler.java:765) 
    at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:275) 
    at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1321) 
    at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:724) 
    at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:490) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:279) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.addBean(ContainerLifeCycle.java:193) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.updateBeans(ContainerLifeCycle.java:718) 
    at org.eclipse.jetty.server.handler.HandlerCollection.setHandlers(HandlerCollection.java:89) 
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.setHandlers(ContextHandlerCollection.java:165) 
    at org.eclipse.jetty.server.handler.HandlerCollection.addHandler(HandlerCollection.java:155) 
    at org.eclipse.jetty.deploy.bindings.StandardDeployer.processBinding(StandardDeployer.java:41) 
    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) 
    at org.eclipse.jetty.util.Scanner.reportDifferences(Scanner.java:528) 
    at org.eclipse.jetty.util.Scanner.scan(Scanner.java:391) 
    at org.eclipse.jetty.util.Scanner.doStart(Scanner.java:313) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.deploy.providers.ScanningAppProvider.doStart(ScanningAppProvider.java:145) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.deploy.DeploymentManager.startAppProvider(DeploymentManager.java:557) 
    at org.eclipse.jetty.deploy.DeploymentManager.doStart(DeploymentManager.java:232) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:108) 
    at org.eclipse.jetty.server.Server.start(Server.java:342) 
    at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:90) 
    at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:58) 
    at org.eclipse.jetty.server.Server.doStart(Server.java:290) 
    at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:69) 
    at org.eclipse.jetty.xml.XmlConfiguration$1.run(XmlConfiguration.java:1236) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at org.eclipse.jetty.xml.XmlConfiguration.main(XmlConfiguration.java:1160) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
    at java.lang.reflect.Method.invoke(Unknown Source) 
    at org.eclipse.jetty.start.Main.invokeMain(Main.java:509) 
    at org.eclipse.jetty.start.Main.start(Main.java:651) 
    at org.eclipse.jetty.start.Main.main(Main.java:99) 

web.xml

<!DOCTYPE web-app PUBLIC 
    "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
    "http://java.sun.com/dtd/web-app_2_3.dtd" > 

<web-app 
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_3_0.xsd" 
metadata-complete="false" 
version="3.0"> 

<servlet> 
    <servlet-name>Hello</servlet-name> 
    <servlet-class>com.hostingcleveland.beweilder.webTransponder.HelloServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>Hello</servlet-name> 
    <url-pattern>/hello/*</url-pattern> 
</servlet-mapping> 

<servlet> 
    <servlet-name>ddbTest</servlet-name> 
    <servlet-class>com.hostingcleveland.beweilder.webTransponder.dynamoDbTestServlet</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>ddbTest</servlet-name> 
    <url-pattern>/ddbt/*</url-pattern> 
</servlet-mapping> 


<servlet> 
    <servlet-name>alertSend</servlet-name> 
    <servlet-class>com.hostingcleveland.beweilder.webTransponder.alertsSend</servlet-class> 
</servlet> 
<servlet-mapping> 
    <servlet-name>alertSend</servlet-name> 
    <url-pattern>/alerts/send/*</url-pattern> 
</servlet-mapping> 


<display-name>Archetype Created Web Application</display-name> 

<listener> 
    <listener-class>org.apache.shiro.web.env.EnvironmentLoaderListener</listener-class> 
</listener> 

<filter> 
    <filter-name>ShiroFilter</filter-name> 
    <filter-class>org.apache.shiro.web.servlet.ShiroFilter</filter-class> 
</filter> 

<filter-mapping> 
    <filter-name>ShiroFilter</filter-name> 
    <url-pattern>/*</url-pattern> 
</filter-mapping> 

<welcome-file-list> 
    <welcome-file>index.jsp</welcome-file> 
</welcome-file-list> 

<resource-ref> 
    <description>MySql Connection</description> 
    <res-ref-name>jdbc/hcleDB</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

Пристань-web.xml

<?xml version="1.0"?> 
<!DOCTYPE Configure PUBLIC "-//Mort Bay Consulting//DTD Configure//EN" "http://jetty.mortbay.org/configure.dtd"> 

<Configure class="org.eclipse.jetty.webapp.WebAppContext"> 
<New id="hcleDB" class="org.eclipse.jetty.plus.jndi.Resource"> 
    <Arg></Arg> 
    <Arg>jdbc/hcleDB</Arg> 
    <Arg> 
     <New class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
      <Set name="Url">jdbc:mysql://xxx:3306/hcle_sec</Set> 
      <Set name="User">xxx</Set> 
      <Set name="Password">xxx</Set> 
     </New> 
    </Arg> 
</New> 
</Configure> 
+0

Вы когда-нибудь это выясняли? Я тоже нахожу это сейчас. Очень странно, как генерируется файл org.eclipse.jetty.jmx NoClassDefFoundError, но stacktrace включает этот класс. Я могу сказать, что это имеет какое-то отношение к загрузчикам классов, но есть мои знания. –

ответ

0

У меня была такая же проблема сегодня с Maven молы плагин, версия: 8.1.10 .v20130312 и с включением apache-cxf 2.7.13 в мой путь к классам с maven pom.xml. При удалении библиотеки cxf-rt-transports-http-jetty она решает проблему. Эта библиотека использует некоторый класс причала, и я полагаю, что он имеет зависимость от другой версии причала, и, как сказал Стивен в комментарии, он имеет какое-то отношение к загрузчикам классов (тот, который предназначен для WEB-INF \ lib и тот, который для сервера). Вот Maven зависимость я извлекал решить мою проблему:

<dependency> 
    <groupId>org.apache.cxf</groupId> 
    <artifactId>cxf-rt-transports-http-jetty</artifactId> 
    <version>2.7.13</version> 
</dependency> 

Так это зависит от вашего пути к классам. Вероятно, у него есть еще одна версия причала.