While setting up a new project, I had to do a bunch of trial-and-error, in order to get the WAR package deployable on the application server. These are my findings thus far:
- Application Server: Wildfly 9.0.1.Final (formerly known as JBoss AS7)
- Application Framework: Spring 4.2.1.RELEASE
- spring-context
- spring-webmvc
- spring-orm
- ORM Framework: Hibernate 4.3.11.Final
- hibernate-core
- hibernate-c3p0
- hibernate-ehcache
Here are some of the problems I'd encountered, that I had to tackle as they appeared:
- java.lang.IllegalStateException: Could not locate SessionFactory in JNDI
- Ensure your hibernate.cfg.xml has these properties
- <session-factory name="mySessionFactory">
- hibernate.jndi.url
- hibernate.jndi.sessionFactoryName
- org.dom4j.DocumentFactory cannot be cast to org.dom4j.DocumentFactory
- Wildfly Administration Console > Configuration
- Subsystems > EE > View
- EE Subsystem > Global Modules
![](data:image/png;base64,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)
- Add
- Name: org.dom4j
- Slot: main (prepopulated by default)
- Save
- Restart Wildfly
- What is not needed to be done:
- Adding of "Dependencies: org.dom4j export" into MANIFEST
- Manual removal/auto exclusion of dom4j JAR during Maven build
- Adding META-INF/jboss-deployment-structure.xml
- JNDI/JDBC configuration
- The naming conventions can get rather confusing at times, but here's what worked in Wildfly:
- JndiObjectFactoryBean > jndiName = java:/jdbc/myDataSource
- Wildfly Admin Console > Configuration
- Subsystems > Datasources > View
- Configure your datasource
- Ensure the JNDI name matches "java:/jdbc/myDataSource"
- Note that Wildfly requires the "java:/" prefix
- Edit: I have concluded that this is in fact no required as long the datasource name matches across your servlet-context.xml and the server configuration. Include this snippet in your web.xml
- <resource-ref>
<res-ref-name>jdbc/msbDataSource</res-ref-name>
<res-type>javax.sql.DataSource</res-type>
<res-auth>Container</res-auth>
</resource-ref>
- org.hibernate.service.UnknownUnwrapTypeException: Cannot unwrap to requested type [javax.sql.DataSource]
- This led me to this
- In short, I had to configure the hibernate.cfg.xml to factor in settings for c3p0 as indicated
- Meanwhile, I also noticed that my Hibernate versions were all over the place;
- Adventurously, I experimented with Hibernate 5, or more specifically org.springframework.orm.hibernate5.HibernateTransactionManager to which came the complain from Wildfly: NoSuchMethodError ConnectionProviderInitiator.extractIsolation
- This was when I decided to take a step back and
- reverted from Hibernate 5 to Hibernate 4;
- and added dependency and configuration for c3p0;
- Edit: I have isolated the cause of this occurrence during the Eclipsed Embedded Jetty deployment to be due to the presence of the "hibernate.connection.datasource" property in my hibernate.cfg.xml that seemingly requires the c3p0 set of properties. In short, don't bother including hibernate.connection.datasource since you will either already have it configured in the application server (e.g. Wildfly) or the jetty-env.xml file.
- Configuration for application context path
- This one was fairly straightforward:
- Create WEB-INF/jboss-web.xml with the following:
<?xml version="1.0" encoding="UTF-8"?>
<jboss-web>
<context-root>/myapp</context-root>
</jboss-web>
My exploration continues...
No comments:
Post a Comment