Hi,
Ich habe mit einem EAR file ein Class NOt FOund Exception problem.
Die das EAR file habe ich auf zwei systemen getested - System A macht keine Probleme alles klappt so wie ich es erwarte - beim System B bekomme Ich die CNF Exception.
Sowohl System A und auch System B sind nach der gleichen ANleitung installiert worden (natürlich kann man fehler nicht ausschließen) - aber ich sehe die Abweichungen nicht.
Es Handelt sich um ein RedHat Linux, Oracle Java 1.8, Weblogic 12c, ... alles gleich.
Dennoch wenn ich auf system B bei der application eine action starte erhalte ich die CNF Exception (siehe unten).
Das EAR ist bei beiden das selbe (md5 sum vergleich)
Ich habe schon überprüft, das beide die selben Server startup arguments haben (bis auf die IP angaben etc.).
Auch der Classpath ist gleich.
Zum Schluss habe ich auch die von dem JVM Prozess geöffneten files vergleichen (lsof ... ) - die sind auch gleich.
Jetzt frage ich mich wie denn das sein kann, das es dann die Klasse in System A findet aber bei System B nicht wo es doch die selben file (also auch jars) öffnet!
Gibt es in Weblogic noch weitere configuration die den classpath/classloader einschränkt (so wie die weblogic.xml im EAR file, die ja bei beiden gleich ist).
Die Konkrete Zeile:
>> final XMLReader parser = XMLReaderFactory.createXMLReader();
Im error log hab ich auch folgende abweichung gefunden ... die mich aber auch nciht weiter gebracht hat:
Habt ihr noch Ideen was ich testen/checken/überprüfen kann? (Auf System hab ich leider keinen direkt zugriff - deshalb ist dort das untersuchen bischen umständlich)
Ich wollte noch rausfinden woher System A eigentlich den Klasse hat, also debugged und dann per IntelliJ "parser .getClass().getProtectionDomain().getCodeSource()" raus finden aber da krieg ich auch nur NULL.
Ich habe mit einem EAR file ein Class NOt FOund Exception problem.
Die das EAR file habe ich auf zwei systemen getested - System A macht keine Probleme alles klappt so wie ich es erwarte - beim System B bekomme Ich die CNF Exception.
Sowohl System A und auch System B sind nach der gleichen ANleitung installiert worden (natürlich kann man fehler nicht ausschließen) - aber ich sehe die Abweichungen nicht.
Es Handelt sich um ein RedHat Linux, Oracle Java 1.8, Weblogic 12c, ... alles gleich.
Dennoch wenn ich auf system B bei der application eine action starte erhalte ich die CNF Exception (siehe unten).
Das EAR ist bei beiden das selbe (md5 sum vergleich)
Ich habe schon überprüft, das beide die selben Server startup arguments haben (bis auf die IP angaben etc.).
Auch der Classpath ist gleich.
Zum Schluss habe ich auch die von dem JVM Prozess geöffneten files vergleichen (lsof ... ) - die sind auch gleich.
Jetzt frage ich mich wie denn das sein kann, das es dann die Klasse in System A findet aber bei System B nicht wo es doch die selben file (also auch jars) öffnet!
Gibt es in Weblogic noch weitere configuration die den classpath/classloader einschränkt (so wie die weblogic.xml im EAR file, die ja bei beiden gleich ist).
Code:
org.xml.sax.SAXException: SAX2 driver class org.apache.xerces.parsers.SAXParser not found
java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:230)
at org.xml.sax.helpers.XMLReaderFactory.createXMLReader(XMLReaderFactory.java:191)
at com.my.application.logic.data.ResourceParser.parse(ResourceParser.java:178)
at com.my.application.logic.data.Model.validate(Model.java:323)
at com.my.application.logic.action.Update.execute(Update.java:165)
at com.my.application.webapp.ActionController.doGet(ActionController.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3682)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3649)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:197)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2433)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2281)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2259)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1691)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1651)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:640)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:406)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
Caused by: java.lang.ClassNotFoundException: org.apache.xerces.parsers.SAXParser
at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1026)
at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:987)
at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:83)
at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:608)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:540)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:493)
at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:470)
at weblogic.utils.classloaders.ChangeAwareClassLoader.loadClass(ChangeAwareClassLoader.java:62)
at org.xml.sax.helpers.NewInstance.newInstance(NewInstance.java:82)
at org.xml.sax.helpers.XMLReaderFactory.loadClass(XMLReaderFactory.java:228)
... 32 more
Die Konkrete Zeile:
>> final XMLReader parser = XMLReaderFactory.createXMLReader();
Im error log hab ich auch folgende abweichung gefunden ... die mich aber auch nciht weiter gebracht hat:
Apr 16, 2019 12:30:04 PM weblogic.wsee.runtime.JMSStoreRoutableIDMapper addServerSetListener
INFO: add ServerSetListener for partition: DOMAIN
Warning: org.apache.xerces.parsers.SAXParser: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.
Warning: org.apache.xerces.parsers.SAXParser: Property 'http://javax.xml.XMLConstants/property/accessExternalDTD' is not recognized.
Warning: org.apache.xerces.parsers.SAXParser: Property 'http://www.oracle.com/xml/jaxp/properties/entityExpansionLimit' is not recognized.
Apr 16, 2019 12:30:38 PM [com.sun.xml.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0075: Policy assertion "{http://docs.oasis-open.org/ws-tx/wsat/2006/06}ATAssertion" was evaluated as "UNKNOWN".
Apr 16, 2019 12:30:38 PM [com.sun.xml.ws.policy.EffectiveAlternativeSelector] selectAlternatives
WARNING: WSP0019: Suboptimal policy alternative selected on the client side with fitness "UNKNOWN".
Habt ihr noch Ideen was ich testen/checken/überprüfen kann? (Auf System hab ich leider keinen direkt zugriff - deshalb ist dort das untersuchen bischen umständlich)
Ich wollte noch rausfinden woher System A eigentlich den Klasse hat, also debugged und dann per IntelliJ "parser .getClass().getProtectionDomain().getCodeSource()" raus finden aber da krieg ich auch nur NULL.