Pregunta

Tengo una sencilla aplicación Spring MVC que mira hacia arriba algunos detalles de usuario desde un servidor LDAP e imprime una página HTML simple utilizando un JSP. La aplicación funciona bien en Tomcat 6. Se utiliza Spring LDAP 1.3.1 y LDAPTemplate hacer las consultas LDAP.

Sin embargo, cuando despliego esta guerra aplicación a Websphere 7, la aplicación no se ejecuta - Websphere devuelve un error interno del servidor 500. En cuanto a archivo de registro de Websphere, veo

[14/12/10 14:50:09:169 GMT] 00000022 DispatcherSer E org.springframework.web.servlet.FrameworkServlet initServletBean Context initialization failed
org.springframework.beans.factory.CannotLoadBeanClassException: Error loading class [org.springframework.ldap.core.support.LdapContextSource] for bean with name 'contextSource' defined in ServletContext resource [/WEB-INF/spring-servlet.xml]: problem with class file or dependent class; nested exception is java.lang.NoClassDefFoundError: org.springframework.beans.factory.InitializingBean
at org.springframework.beans.factory.support.AbstractBeanFactory.resolveBeanClass(AbstractBeanFactory.java:1253)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.predictBeanType(AbstractAutowireCapableBeanFactory.java:576)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:1319)
at org.springframework.beans.factory.support.AbstractBeanFactory.isFactoryBean(AbstractBeanFactory.java:885)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:562)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)

Mi Web-inf \ lib directorio tiene todos los archivos JAR, incluyendo org.springframework.beans-3.0.5.RELEASE.jar, que contiene InitializingBean. Estoy por lo tanto, no está seguro de qué Websphere informa que la clase como falta.

El contenido de mi WEB-INF \ lib:

aopalliance.jar
com.springsource.org.apache.commons.logging-1.1.1.jar
com.springsource.org.apache.log4j-1.2.15.jar
commons-lang-2.5.jar
commons-logging-1.1.1.jar
commons-pool-1.5.4.jar
jstl-api-1.2.jar
jstl-impl-1.2.jar
ldapbp-1.0.jar
org.springframework.aop-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.jdbc-3.0.5.RELEASE.jar
org.springframework.oxm-3.0.5.RELEASE.jar
org.springframework.transaction-3.0.5.RELEASE.jar
org.springframework.web-3.0.5.RELEASE.jar
org.springframework.web.servlet-3.0.5.RELEASE.jar
spring-ldap-1.3.1.RELEASE-all.jar

Y aquí está la definición del frijol, que contextSource Websphere está teniendo problemas para cargar (el nombre de usuario / contraseña es válida y funciona con Tomcat):

<bean id="contextSource" class="org.springframework.ldap.core.support.LdapContextSource">
  <property name="url" value="ldaps://moo.example.com:1300/" />
  <property name="userDn" value="CN=foo,OU=baz,DC=bar,DC=blat,DC=org" />
  <property name="password" value="*******" />
</bean>

Yo sería muy feliz si alguien podría señalar por qué esto no está funcionando en WebSphere. No estoy muy seguro acerca de las reglas de clase de carga en Websphere y agradecería cualquier consejo sobre esto.

¿Fue útil?

Solución

A su vez en la Clase Cargando rastro. Esto le dirá lo que las clases se cargan y de la cual tarro. Como Sajan mencionan más probable es que hay frascos duplicados en la ruta de clase y el cargador de clases que se espera no ha cargado la clase (y un cargador de clases padre probablemente ha cargado una clase).

NoClassDefFoundError (NCDFE) no quiere decir que no pudo localizar la clase que se está buscando. Los errores en la inicialización estática se volverían a cabo de forma explícita como un "java.lang.ExceptionInInitializerError" (EIIE) "

Tanto NCDFE y EIIE extienden desde error Vinculación.

En general todos estos errores puede ser fácilmente troubleshooted encendiendo la carga de clases para el servidor. También utilizar el Visor de cargador de clases disponibles en la consola de administración para ayudarle en sus actividades de resolución de problemas.

HTH Manglu

Otros consejos

Esta es una excepción pegajosa y común. Recuerde, no se encontró que NoClassDefFoundError no significa que la clase, más bien significa:

NoClassDefFoundError: La clase dada se puede conocer, pero algo salió mal cuando inicializarlo (una INTERFACE se implementó no podría ser encontró, algo salió mal en una inicializador estático, etc.).

Desde aquí .

Por favor, compruebe que no tiene la misma clase en cualquier otra posible frasco

Por favor, compruebe si ha añadido en las dependencias pom.xml.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top