Which geronimo, which xerces, and how are you making your xerces
available to your app?
It's been a very long time since I dealt with this kind of problem but
I have a faint memory that xml parsers are "endorsed" which basically
means that classloading for them is completely messed up. I think you
may need to put your copy of xerces in <geronimo-home>/lib/endorsed.
However I get endorsed and ext mixed up and it might be lib/ext.
hope this helps more than it confuses.
david jencks
On Dec 15, 2008, at 10:53 AM, Christian Svensson wrote:
Hello.
I'm trying to make OpenJPA and Xerces play along.
When I use my code as is without Xerces, everything works until I
use new DocumentImpl(); - no surprise there.
When I add my xercesImpl.jar, sometimes it works (I suppose when the
ClassLoader hasn't got poisoned) and then it stops when I redeploy:
org.apache.openjpa.persistence.PersistenceException:
org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be
cast to org.apache.xerces.xni.parser.XMLParserConfiguration
at
org
.apache
.openjpa
.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:
196)
at
org
.apache
.openjpa
.kernel
.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:192)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:145)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:56)
at org.cmd.web.fileserver.Browser.doGet(Browser.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at
org
.apache
.geronimo
.jetty6
.InternalJettyServletHolder.handle(InternalJettyServletHolder.java:65)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
362)
at
org
.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at org.apache.geronimo.jetty6.handler.TwistyWebAppContext.access
$101(TwistyWebAppContext.java:40)
at org.apache.geronimo.jetty6.handler.TwistyWebAppContext
$TwistyHandler.handle(TwistyWebAppContext.java:65)
at
org
.apache
.geronimo
.jetty6
.handler
.ThreadClassloaderHandler.handle(ThreadClassloaderHandler.java:46)
at
org
.apache
.geronimo
.jetty6
.handler.InstanceContextHandler.handle(InstanceContextHandler.java:58)
at
org
.apache
.geronimo
.jetty6
.handler.UserTransactionHandler.handle(UserTransactionHandler.java:48)
at
org
.apache
.geronimo
.jetty6
.handler.ComponentContextHandler.handle(ComponentContextHandler.java:
47)
at
org
.apache
.geronimo
.jetty6.handler.TwistyWebAppContext.handle(TwistyWebAppContext.java:
59)
at
org
.mortbay
.jetty
.handler
.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at
org
.mortbay
.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
505)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:828)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org
.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
395)
at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:214)
at org.apache.geronimo.pool.ThreadPool
$ContextClassLoaderRunnable.run(ThreadPool.java:344)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassCastException:
org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be
cast to org.apache.xerces.xni.parser.XMLParserConfiguration
at org.apache.xerces.parsers.DOMParser.(Unknown Source)
at org.apache.xerces.parsers.DOMParser.(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source)
at
org
.apache
.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown
Source)
at
org.apache.openjpa.lib.xml.XMLFactory.getDOMParser(XMLFactory.java:
107)
at
org
.apache
.openjpa.jdbc.sql.SQLErrorCodeReader.parse(SQLErrorCodeReader.java:
107)
at
org
.apache
.openjpa.jdbc.sql.DBDictionary.endConfiguration(DBDictionary.java:
4128)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:505)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:430)
at
org
.apache
.openjpa
.jdbc
.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:155)
at
org
.apache
.openjpa
.jdbc
.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:99)
at
org
.apache
.openjpa
.jdbc
.conf
.JDBCConfigurationImpl
.getDBDictionaryInstance(JDBCConfigurationImpl.java:562)
at
org
.apache
.openjpa
.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:
1265)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:505)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:430)
at
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:
103)
at
org
.apache
.openjpa
.conf
.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
at
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:
83)
at
org
.apache
.openjpa
.conf
.OpenJPAConfigurationImpl
.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
at
org
.apache
.openjpa
.conf
.OpenJPAConfigurationImpl
.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
at
org
.apache
.openjpa
.kernel
.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
at
org
.apache
.openjpa
.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:
183)
... 36 more
Caused by:
java.lang.ClassCastException:
org.apache.xerces.parsers.XIncludeAwareParserConfiguration cannot be
cast to org.apache.xerces.xni.parser.XMLParserConfiguration
at org.apache.xerces.parsers.DOMParser.(Unknown Source)
at org.apache.xerces.parsers.DOMParser.(Unknown Source)
at org.apache.xerces.jaxp.DocumentBuilderImpl.(Unknown Source)
at
org
.apache
.xerces.jaxp.DocumentBuilderFactoryImpl.newDocumentBuilder(Unknown
Source)
at
org.apache.openjpa.lib.xml.XMLFactory.getDOMParser(XMLFactory.java:
107)
at
org
.apache
.openjpa.jdbc.sql.SQLErrorCodeReader.parse(SQLErrorCodeReader.java:
107)
at
org
.apache
.openjpa.jdbc.sql.DBDictionary.endConfiguration(DBDictionary.java:
4128)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:505)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:430)
at
org
.apache
.openjpa
.jdbc
.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:155)
at
org
.apache
.openjpa
.jdbc
.sql.DBDictionaryFactory.newDBDictionary(DBDictionaryFactory.java:99)
at
org
.apache
.openjpa
.jdbc
.conf
.JDBCConfigurationImpl
.getDBDictionaryInstance(JDBCConfigurationImpl.java:562)
at
org
.apache
.openjpa
.jdbc.meta.MappingRepository.endConfiguration(MappingRepository.java:
1265)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:505)
at
org
.apache
.openjpa
.lib.conf.Configurations.configureInstance(Configurations.java:430)
at
org.apache.openjpa.lib.conf.PluginValue.instantiate(PluginValue.java:
103)
at
org
.apache
.openjpa
.conf
.MetaDataRepositoryValue.instantiate(MetaDataRepositoryValue.java:68)
at
org.apache.openjpa.lib.conf.ObjectValue.instantiate(ObjectValue.java:
83)
at
org
.apache
.openjpa
.conf
.OpenJPAConfigurationImpl
.newMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:863)
at
org
.apache
.openjpa
.conf
.OpenJPAConfigurationImpl
.getMetaDataRepositoryInstance(OpenJPAConfigurationImpl.java:854)
at
org
.apache
.openjpa
.kernel
.AbstractBrokerFactory.makeReadOnly(AbstractBrokerFactory.java:638)
at
org
.apache
.openjpa
.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:
183)
at
org
.apache
.openjpa
.kernel
.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:192)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:145)
at
org
.apache
.openjpa
.persistence
.EntityManagerFactoryImpl
.createEntityManager(EntityManagerFactoryImpl.java:56)
at org.cmd.web.fileserver.Browser.doGet(Browser.java:51)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:693)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:806)
at
org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487)
at
org
.apache
.geronimo
.jetty6
.InternalJettyServletHolder.handle(InternalJettyServletHolder.java:65)
at
org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:
362)
at
org
.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:
216)
at
org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:
181)
at
org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:
726)
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:
405)
at org.apache.geronimo.jetty6.handler.TwistyWebAppContext.access
$101(TwistyWebAppContext.java:40)
at org.apache.geronimo.jetty6.handler.TwistyWebAppContext
$TwistyHandler.handle(TwistyWebAppContext.java:65)
at
org
.apache
.geronimo
.jetty6
.handler
.ThreadClassloaderHandler.handle(ThreadClassloaderHandler.java:46)
at
org
.apache
.geronimo
.jetty6
.handler.InstanceContextHandler.handle(InstanceContextHandler.java:58)
at
org
.apache
.geronimo
.jetty6
.handler.UserTransactionHandler.handle(UserTransactionHandler.java:48)
at
org
.apache
.geronimo
.jetty6
.handler.ComponentContextHandler.handle(ComponentContextHandler.java:
47)
at
org
.apache
.geronimo
.jetty6.handler.TwistyWebAppContext.handle(TwistyWebAppContext.java:
59)
at
org
.mortbay
.jetty
.handler
.ContextHandlerCollection.handle(ContextHandlerCollection.java:206)
at
org
.mortbay
.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
at
org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:
139)
at org.mortbay.jetty.Server.handle(Server.java:324)
at
org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:
505)
at org.mortbay.jetty.HttpConnection
$RequestHandler.headerComplete(HttpConnection.java:828)
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514)
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380)
at
org
.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:
395)
at org.apache.geronimo.pool.ThreadPool$1.run(ThreadPool.java:214)
at org.apache.geronimo.pool.ThreadPool
$ContextClassLoaderRunnable.run(ThreadPool.java:344)
at java.util.concurrent.ThreadPoolExecutor
$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor
$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)
As a novice I see two options:
a) Use the same xerces as OpenJPA - I've been unsuccessful in
locating it though.
b) Shield the application somehow. I know that EARs have hidden-
classes, but reading mailing lists it would see that it does not
work with Xerces - why I'm not sure.
How do I get around this issue?
Greetings,
--
Christian Svensson
Command Systems