Frage

Ich habe eine einfache Spring MVC-Anwendung, dass Blicke auf einige Benutzerdaten aus einem LDAP-Server und druckt eine einfache HTML-Seite eine JSP verwenden. Die Anwendung funktioniert auf Tomcat 6. Es verwendet Frühling LDAP 1.3.1 und LDAPTemplate die LDAP-Suche zu tun.

Allerdings, wenn ich diese Anwendung IST Websphere einsetzen 7, wird die App nicht ausgeführt - Websphere gibt einen 500 Interner Serverfehler. Mit Blick auf Websphere Protokolldatei, ich sehe

[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)

Meine Web-inf \ lib hat alle JAR-Dateien, einschließlich org.springframework.beans-3.0.5.RELEASE.jar, die InitializingBean enthält. Ich bin daher nicht sicher, warum Websphere meldet die Klasse als vermisst.

Inhalt meiner 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

Und hier ist die Definition der contextSource Bohne, der Websphere Schwierigkeiten beim Laden wird mit (der Benutzername / Passwort gültig ist, und arbeitet mit 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>

Ich wäre sehr froh, wenn jemand darauf hinweisen könnte, warum dies nicht auf Websphere arbeiten. Ich bin mir nicht sicher, ob Klassenladeregeln in Websphere und würde einen Rat dies zu schätzen wissen.

War es hilfreich?

Lösung

Einschalten Klassenladen Spur. Dies würde Ihnen sagen, welche Klassen geladen werden und aus dem Glas. Wie Sajan erwähnt stehen die Chancen, dass es doppelte Gläser in den Classpath und die Classloader, dass Sie erwarten nicht diese Klasse geladen ist (und eine Elternklasse loader eine Klasse wahrscheinlich geladen).

NoClassDefFoundError (NCDFE) bedeutet es nicht, die Klasse ausfindig machen konnte, dass er sucht. Fehler bei der statischen Initialisierung würde explizit herausstellen als „java.lang.ExceptionInInitializerError“ (EIIE) „

Sowohl NCDFE und EIIE erstrecken sich von Linkage Fehler.

In der Regel all diesen Fehler kann leicht durch Einschalten der Klasse Laden für den Server troubleshooted werden. Verwenden Sie auch den Class Loader-Viewer in der Admin-Konsole auf Hilfe in Problembehandlung Aktivitäten.

HTH Manglu

Andere Tipps

Dies ist eine klebrige und gemeinsame Ausnahme. Denken Sie daran, dass sich NoClassDefFoundError die Klasse nicht bedeuten, wurde nicht gefunden, sondern es bedeutet:

NoClassDefFoundError: Die angegebene Klasse gefunden werden kann, aber etwas ging falsch, wenn es (eine Initialisierung Schnittstelle es konnte nicht umgesetzt werden gefunden, in einem etwas schief gelaufen ist statische Initialisierer usw.).

Von hier .

Bitte überprüfen Sie, dass Sie nicht die gleiche Klasse in jeder anderen möglichen jar

Überprüfen Sie, ob Sie die Abhängigkeiten in pom.xml-Datei hinzugefügt haben.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top