Community
Participate
Working Groups
The new DBWS server test - LegacySimpleTableServiceTestSuite failed on all app servers Stack Trace: ============ Service test failed: SOAPMessage request format error - java.lang.NullPointerException junit.framework.AssertionFailedError: Service test failed: SOAPMessage request format error - java.lang.NullPointerException at dbws.testing.legacysimpletable.LegacySimpleTableServiceTestSuite.testService(LegacySimpleTableServiceTestSuite.java:287)
This test works fine in my local environment. I am thinking that the datasource name is incorrect. The checked in .war assumes "jdbc/DBWStestDS", but as I recall, the QA environment uses a different datasource name. Please provide the correct name and I'll update the .war file accordingly.
The QA environment uses "jdbc/EclipseLinkDS" for all application servers except JBoss, which uses "java:/EclipseLinkDS". Phase one will involve changing the DS name in the eclipselink-dbws-sessions.xml file in the checked in .war file. Assuming this resolves the issue on all application servers except JBoss, phase two will involve either checking in a second .war file to be used on JBoss, or perhaps using a script to update the sessions file for the JBoss case prior to deployment.
Fir for phase#1 checked into EclipseLink 2.5.0, revision: 8e3c40a61fbc57d4f4e3d0bb6b057de279c8f93e
With the phase#1 fix, the test passed on all versions of WebLogic server, but failed on WebSphere, GlassFish and JBoss with different error messages. Exception with WebSphere: ========================= Service test failed: Internal Error junit.framework.AssertionFailedError: Service test failed: Internal Error at dbws.testing.legacysimpletable.LegacySimpleTableServiceTestSuite.testService(LegacySimpleTableServiceTestSuite.java:287) Exception with GlassFish: ========================= Service test failed: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class _dbws.DBWSProvider junit.framework.AssertionFailedError: Service test failed: com.sun.enterprise.container.common.spi.util.InjectionException: Error creating managed object for class: class _dbws.DBWSProvider at dbws.testing.legacysimpletable.LegacySimpleTableServiceTestSuite.testService(LegacySimpleTableServiceTestSuite.java:287) Exception with JBoss: ===================== Service test failed: Calling of @PostConstruct annotated method failed: public void _dbws.DBWSProvider.init() junit.framework.AssertionFailedError: Service test failed: Calling of @PostConstruct annotated method failed: public void _dbws.DBWSProvider.init() at dbws.testing.legacysimpletable.LegacySimpleTableServiceTestSuite.testService(LegacySimpleTableServiceTestSuite.java:287)
I looked into the eclipselink-dbws-sessions.xml in the .war file, not only the <datasource>, but <server-class> are defined there. <server-class>org.eclipse.persistence.platform.server.wls.WebLogic_10_Platform</server-class> That is why the .war can be deployed successfully on WebLogic servers only. It is not good idea to check in multiple versions of .war files, I can unpack and re-pack the .war file to include server-specific info in my nightly testing script.
Cause: In the checked-in .war file, ecclipselink-dbws-sessions.xml contains server-specific attributes <datasource>, <server-class> and <external-transaction-controller-class> Solution: In our nightly testing scripts, repackage the .war file to include the server-specific info Result: It still failed on JBoss - Investigating
I'm thinking that we don't really need to run the legacy tests on any server except WebLogic. The test just ensures that we can successfully read in the legacy deployment XML projects (as opposed to the new JPA/JAXB metadata format) for backwards compatibility. The application server should't affect reading in the project files, so I'd think we are OK with just testing on WLS. I vote to close this bug as WON'T FIX or INVALID.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink