cancel
Showing results for 
Search instead for 
Did you mean: 

Deployment problem SAXException

Former Member
0 Kudos

Hello.

I've got a problem deploying my applications to the server.

It doesn't happen all the times, but when it starts happening I have to restart the server to can deploy again.

This is the trace. I try to deploy the Calculator sample application and I get this:

05/07/19 15:38:35 - ***********************************************************

05/07/19 15:38:36 - Start updating EAR file...

05/07/19 15:38:37 - EAR file updated successfully for 551ms.

05/07/19 15:38:37 - Start updating...

05/07/19 15:38:40 - EAR file uploaded to server for 280ms.

05/07/19 15:38:44 - ERROR: Not updated. Deploy Service returned ERROR:

java.rmi.RemoteException: Cannot deploy application sap.com/CalculadoraEAR..

Reason: Exception during generation.; nested exception is:

com.sap.engine.services.ejb.exceptions.deployment.EJBFileGenerationException: Exception during generation.

at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:602)

at com.sap.engine.services.deploy.server.DeployServiceImplp4_Skel.dispatch(DeployServiceImplp4_Skel.java:1234)

at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:268)

at com.sap.engine.services.rmi_p4.DispatchImpl._run(DispatchImpl.java:165)

at com.sap.engine.services.rmi_p4.server.P4SessionProcessor.request(P4SessionProcessor.java:102)

at com.sap.engine.core.service630.context.cluster.session.ApplicationSessionMessageListener.process(ApplicationSessionMessageListener.java:37)

at com.sap.engine.core.cluster.impl6.session.UnorderedChannel$MessageRunner.run(UnorderedChannel.java:71)

at com.sap.engine.core.thread.impl3.ActionObject.run(ActionObject.java:37)

at java.security.AccessController.doPrivileged(Native Method)

at com.sap.engine.core.thread.impl3.SingleThread.execute(SingleThread.java:94)

at com.sap.engine.core.thread.impl3.SingleThread.run(SingleThread.java:140)

Caused by: com.sap.engine.services.ejb.exceptions.deployment.EJBFileGenerationException: Exception during generation.

at com.sap.engine.services.ejb.deploy.DeployAdmin.processXSLT(DeployAdmin.java:906)

at com.sap.engine.services.ejb.deploy.DeployAdmin.deploySingleJar(DeployAdmin.java:589)

at com.sap.engine.services.ejb.deploy.DeployAdmin.generate(DeployAdmin.java:263)

at com.sap.engine.services.ejb.EJBAdmin.deploy(EJBAdmin.java:2154)

at com.sap.engine.services.deploy.server.application.DeploymentTransaction.makeComponents(DeploymentTransaction.java:975)

at com.sap.engine.services.deploy.server.application.DeploymentTransaction.begin(DeploymentTransaction.java:586)

at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhasesOnOneServer(ApplicationTransaction.java:301)

at com.sap.engine.services.deploy.server.application.ApplicationTransaction.makeAllPhases(ApplicationTransaction.java:332)

at com.sap.engine.services.deploy.server.DeployServiceImpl.makeGlobalTransaction(DeployServiceImpl.java:2945)

at com.sap.engine.services.deploy.server.DeployServiceImpl.update(DeployServiceImpl.java:587)

... 10 more

Caused by: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:805)

at com.sap.engine.services.ejb.deploy.DeployAdmin.processXSLT(DeployAdmin.java:899)

... 19 more

Caused by: javax.xml.transform.TransformerConfigurationException: javax.xml.transform.TransformerException: org.xml.sax.SAXException: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:984)

at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:788)

... 20 more

Caused by: javax.xml.transform.TransformerException: org.xml.sax.SAXException: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:980)

... 21 more

Caused by: org.xml.sax.SAXException: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

at org.apache.xalan.processor.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:947)

... 21 more

For detailed information see the log file of Deploy Service.

05/07/19 15:38:44 - ***********************************************************

Jul 19, 2005 3:38:44 PM Info: End of log messages of the target system.

Jul 19, 2005 3:38:44 PM Info: ***** End of SAP J2EE Engine Deployment (J2EE Application) *****

Jul 19, 2005 3:38:44 PM Error: Execution of deployment action for "CalculadoraEAR" aborted:

Caught exception during application deployment from SAP J2EE Engine's deploy service:

java.rmi.RemoteException: Cannot deploy application sap.com/CalculadoraEAR..

Reason: Exception during generation.; nested exception is:

com.sap.engine.services.ejb.exceptions.deployment.EJBFileGenerationException: Exception during generation.

(message ID: com.sap.sdm.serverext.servertype.inqmy.extern.EngineApplOnlineDeployerImpl.performAction(DeploymentActionTypes).REMEXC)

Jul 19, 2005 3:38:45 PM Error: Deployment NOT successful for CalculadoraEAR

It seems like a classpath problem. I don't know why tries to use the class org.apache.xerces.jaxp.SAXParserFactoryImpl.

This class is in the xerces.jar, but this jar is deployed inside other application that I'm migrating from jboss. I think it must use the SAXParserFactoyImpl that comes inside the server lib sapxmltoolkit.jar.

Please, could anybody help me?

Carlos

Accepted Solutions (1)

Accepted Solutions (1)

Vlado
Advisor
Advisor
0 Kudos

Hi Carlos,

The problem here is not with the xerces.jar in the other application, it's that org.apache.xalan.processor.TransformerFactoryImpl is used instead of the sapxmltoolkit TransformerFactory:

<b>at org.apache.xalan.processor.TransformerFactoryImpl.newTransformer(TransformerFactoryImpl.java:805)

at com.sap.engine.services.ejb.deploy.DeployAdmin.processXSLT(DeployAdmin.java:899)</b>

There can be a few reasons for this. According to the documentation of the <i>TransformerFactory.newInstance()</i> method, it uses the following ordered lookup procedure to determine the TransformerFactory implementation class to load:

<i> - Use the javax.xml.transform.TransformerFactory system property.

- Use the properties file "lib/jaxp.properties" in the JRE directory. This configuration file is in standard java.util.Properties format and contains the fully qualified name of the implementation class with the key being the system property defined above.

- Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API will look for a classname in the file META-INF/services/javax.xml.transform.TransformerFactory in jars available to the runtime.

- Platform default TransformerFactory instance.</i>

So you should check whether you have specified by some of the above means the javax.xml.transform.TransformerFactory to be org.apache.xalan.processor.TransformerFactoryImpl.

Likewise, it could be that your application has access to the xalan.jar (either referencing or containing it) and thus enabling the org.apache.xalan.processor.TransformerFactoryImpl class to be loaded instead of the sapxmltoolkit TransformerFactory implementation.

Hope that helps!

Vladimir

Former Member
0 Kudos

Hello Vladimir.

Thank you very much.

I found this lines in the init method of a servlet:

public void init() throws ServletException {

....

System.setProperty("javax.xml.transform.TransformerFactory",

"org.apache.xalan.processor.TransformerFactoryImpl");

System.setProperty("javax.xml.parsers.SAXParserFactory", "org.apache.xerces.jaxp.SAXParserFactoryImpl");

System.setProperty("org.xml.sax.driver", "org.apache.xerces.parsers.SAXParser");

When this method is executed changes the system property TransformerFactory to TransformerFactory org.apache.xalan.processor.TransformerFactoryImpl, so when the deployment process tries to parse the xml files does not find the class in its classpath.

Now I'm trying to set this property only at application level.

Thank you again.

Carlos

Former Member
0 Kudos

Hi Carlos

I am also getting the same problem .

Caused by: javax.xml.parsers.FactoryConfigurationError: Provider org.apache.xerces.jaxp.SAXParserFactoryImpl not found

at javax.xml.parsers.SAXParserFactory.newInstance(SAXParserFactory.java:93)

at com.sap.dictionary.database.dbs.XmlExtractor.createXmlExtractor(XmlExtractor.java:49)

at com.sap.dictionary.database.dbs.XmlExtractor.<init>(XmlExtractor.java:30)

at com.sap.dictionary.database.catalog.DbGeneralStructure.<init>(DbGeneralStructure.java:84)

at com.sap.dictionary.database.catalog.XmlCatalogReader.getTable(XmlCatalogReader.java:90)

at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:126)

at com.sap.sql.catalog.impl.BufferedCatalogReader.getTable(BufferedCatalogReader.java:89)

at com.sap.sql.sqlparser.CheckColAndTabVisitor.checkTabs(CheckColAndTabVisitor.java:247)

at com.sap.sql.sqlparser.CheckColAndTabVisitor.performCatalogChecks(CheckColAndTabVisitor.java:170)

at com.sap.sql.sqlparser.CommonSQLStatement.checkSemantics(CommonSQLStatement.java:183)

at com.sap.sql.jdbc.common.StatementAnalyzerImpl.check(StatementAnalyzerImpl.java:42)

at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:126)

at com.sap.sql.jdbc.common.StatementAnalyzerImpl.preprepareStatement(StatementAnalyzerImpl.java:109)

at com.sap.sql.jdbc.common.CommonPreparedStatement.<init>(CommonPreparedStatement.java:155)

at com.sap.sql.jdbc.common.CommonConnectionImpl.prepareStatement(CommonConnectionImpl.java:314)

at com.sap.engine.services.dbpool.cci.ConnectionHandle.prepareStatement(ConnectionHandle.java:81)

at com.sap.engine.services.failover.db.SessionPersistentStorageImpl.deleteAllSessions(SessionPersistentStorageImpl.java:280)

at com.sap.engine.services.failover.storage.DatabasePersistentStorage.deleteAllSessions(DatabasePersistentStorage.java:151)

at com.sap.engine.services.servlets_jsp.server.container.RemoveAction.remove(RemoveAction.java:68)

at com.sap.engine.services.servlets_jsp.server.container.WebContainer.makeUpdate(WebContainer.java:218)

at com.sap.engine.services.deploy.server.application.UpdateTransaction.makeComponents(UpdateTransaction.java:376)

... 16 more

But we dont have any code in the init method. We are using xerces ,dom4j , saaj and soap jar in the web-inf /lib.

While deployment it throws the above error .Any idea why so ?

regards

sujesh

Answers (1)

Answers (1)

Former Member
0 Kudos

Hello again.

I deleted the application, restarted the server and now I can deploy the calculator example.

I'm sure that it's a classpath problem. These are the files in the ear file of the application.

bcprov.jar

cglib.jar

commons-collections.jar

commons-lang.jar

commons-logging.jar

crimson.jar

dom4j.jar

hibernate.jar

ISicres-Server.jar

isicres.war

jaxp.jar

jconfig.jar

jmxri.jar

jta.jar

log4j.jar

META-INF

odmg.jar

oscache.jar

trove.jar

xalan.jar

xerces.jar

Why when I deploy this application, the server tries to use a class from xerces.jar for parsing a deployment descriptor of another application?

Please, help me.

Carlos