seam persistence3 tomcat-7.0.8
fiorenzino Apr 4, 2011 5:57 PMHi,
i want use seam 3 persistence in tomcat 7.
I don't find any seam 3 persistence howto, to replace this Gavin's old post http://seamframework.org/Documentation/WeldAndJPARunningInTomcat
Below my sample application.
pom.xml:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>by.giava</groupId> <artifactId>test-persistence1</artifactId> <version>0.0.1</version> <packaging>war</packaging> <name>test-persistence1</name> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <seam.version>3.0.0.Final</seam.version> </properties> <repositories> <repository> <id>jboss-public-repository-group</id> <name>JBoss Public Maven Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> <layout>default</layout> <releases> <enabled>true</enabled> <updatePolicy>never</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <updatePolicy>never</updatePolicy> </snapshots> </repository> <repository> <id>java-net</id> <name>Java.net Repository for Maven</name> <url>http://download.java.net/maven/2</url> <layout>default</layout> </repository> <repository> <id>glassfish-maven-repository.dev.java.net</id> <name>GlassFish Maven Repository</name> <url>http://download.java.net/maven/glassfish</url> </repository> </repositories> <dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.seam</groupId> <artifactId>seam-bom</artifactId> <version>${seam.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.jboss.seam.persistence</groupId> <artifactId>seam-persistence</artifactId> </dependency> <dependency> <groupId>org.jboss.logging</groupId> <artifactId>jboss-logging</artifactId> <version>3.0.0.Beta4</version> </dependency> <dependency> <groupId>org.jboss.seam.solder</groupId> <artifactId>seam-solder</artifactId> </dependency> <!-- <dependency> <groupId>org.jboss.seam.faces</groupId> <artifactId>seam-faces</artifactId> </dependency> --> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.servlet</groupId> <artifactId>seam-servlet</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.catch</groupId> <artifactId>seam-catch</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.config</groupId> <artifactId>seam-config-xml</artifactId> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-core</artifactId> <version>3.5.6-Final</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-entitymanager</artifactId> <version>3.5.6-Final</version> </dependency> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <version>1.0.0-CR-1</version> </dependency> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-annotations</artifactId> <version>3.5.6-Final</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.5.10</version> </dependency> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <version>1.0</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>2.0.4-b09</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>2.0.4-b09</version> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-api</artifactId> <version>1.1.Final</version> </dependency> <dependency> <groupId>org.jboss.weld</groupId> <artifactId>weld-core</artifactId> <!-- version>1.1.0.Final</version --> <version>1.1.0.Final</version> </dependency> <dependency> <groupId>org.jboss.weld.servlet</groupId> <artifactId>weld-servlet</artifactId> <!-- version>1.1.0.Final</version --> <version>1.1.0.Final</version> </dependency> </dependencies> <build> <finalName>test-persistence1</finalName> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.2</version> <inherited>true</inherited> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> </plugins> </build> </project>
WEB-INF/web.xml:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"> <listener> <listener-class>org.jboss.weld.environment.servlet.Listener</listener-class> </listener> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> <resource-env-ref> <description>Object factory for the CDI Bean Manager</description> <resource-env-ref-name>BeanManager</resource-env-ref-name> <resource-env-ref-type>javax.enterprise.inject.spi.BeanManager</resource-env-ref-type> </resource-env-ref> </web-app>
WEB-INF/beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd"> <interceptors> <class>org.jboss.seam.transaction.TransactionInterceptor</class> </interceptors> </beans>
WEB-INF/seam-beans.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:s="urn:java:ee" xmlns:t="urn:java:org.jboss.seam.transaction" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd"> <t:SeSynchronizations> <s:modifies /> </t:SeSynchronizations> <t:EntityTransaction> <s:modifies /> </t:EntityTransaction> </beans>
META-INF/context.xml
<?xml version="1.0" encoding="UTF-8"?> <Context> <Manager pathname="" /> <!-- disables storage of sessions across restarts --> <Resource name="BeanManager" auth="Container" type="javax.enterprise.inject.spi.BeanManager" factory="org.jboss.weld.resources.ManagerObjectFactory" /> </Context>
my WEB-INF/classes/META-INF/persistence.xml
<?xml version="1.0" encoding="UTF-8"?> <persistence version="1.0" xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"> <persistence-unit name="pu" transaction-type="RESOURCE_LOCAL"> <provider>org.hibernate.ejb.HibernatePersistence</provider> <properties> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect" /> <property name="hibernate.hbm2ddl.auto" value="update" /> <property name="hibernate.connection.driver_class" value="org.gjt.mm.mysql.Driver" /> <property name="hibernate.connection.username" value="colonnella" /> <property name="hibernate.connection.password" value="colonnella" /> <property name="hibernate.connection.url" value="jdbc:mysql://localhost:3306/colonnella" /> <property name="hibernate.hbm2ddl.auto" value="update" /> </properties> </persistence-unit> </persistence>
some important class:
WEB-INF/classes/by/giava/producer/EmProducer.java:
package by.giava.producer; import java.io.Serializable; import javax.enterprise.context.ApplicationScoped; import javax.enterprise.context.Dependent; import javax.enterprise.inject.Produces; import javax.persistence.EntityManagerFactory; import javax.persistence.PersistenceContext; import org.jboss.seam.solder.core.ExtensionManaged; @ApplicationScoped public class EmProducer implements Serializable { private static final long serialVersionUID = 1L; @ExtensionManaged @Produces @PersistenceContext(unitName = "pu") @Dependent EntityManagerFactory em; public EmProducer() { System.out.println("start em producer"); } }
WEB-INF/classes/by/giava/repository/ConfigurationSession.java
package by.giava.repository; import java.io.Serializable; import javax.enterprise.context.RequestScoped; import javax.inject.Inject; import javax.inject.Named; import javax.persistence.EntityManager; import org.jboss.seam.transaction.TransactionPropagation; import org.jboss.seam.transaction.Transactional; import by.giava.model.Configuration; @Named @RequestScoped public class ConfigurationSession implements Serializable { private static final long serialVersionUID = 1L; @Inject EntityManager em; public ConfigurationSession() { System.out.println("start configurationSession"); } @Transactional(TransactionPropagation.REQUIRED) public Configuration readConfiguration() { Configuration c = null; try { c = getEm().find(Configuration.class, 1L); } catch (Exception e) { e.printStackTrace(); } if (c == null) { c = new Configuration(); getEm().persist(c); } return c; } public EntityManager getEm() { return em; } public void setEm(EntityManager em) { this.em = em; } }
Log files.
catalina.out:
4-apr-2011 23.27.11 org.apache.catalina.startup.HostConfig deployWAR INFO: Deploying web application archive test-persistence1.war 4-apr-2011 23.27.15 org.jboss.weld.bootstrap.WeldBootstrap <clinit> INFO: WELD-000900 1.1.0 (Final) 4-apr-2011 23.27.15 org.jboss.weld.bootstrap.WeldBootstrap startContainer INFO: WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously. 4-apr-2011 23.27.15 org.jboss.seam.solder.core.VersionLoggerUtil logVersionInformation INFO: Seam Solder 3.0.0.Final (build id: 3.0.0.Final) 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension beforeBeanDiscovery INFO: Seam Config XML provider starting... 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension getDocumentProviders INFO: Loading XmlDocumentProvider: org.jboss.seam.config.xml.bootstrap.ResourceLoaderXmlDocumentProvider 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension beforeBeanDiscovery INFO: Reading XML file: jar:file:/usr/tomcat/apache-tomcat-7.0.8/webapps/test-persistence1/WEB-INF/lib/seam-catch-3.0.0.Final.jar!/META-INF/beans.xml 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension beforeBeanDiscovery INFO: Reading XML file: jar:file:/usr/tomcat/apache-tomcat-7.0.8/webapps/test-persistence1/WEB-INF/lib/seam-servlet-3.0.0.Final.jar!/META-INF/beans.xml 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension beforeBeanDiscovery INFO: Reading XML file: jar:file:/usr/tomcat/apache-tomcat-7.0.8/webapps/test-persistence1/WEB-INF/lib/seam-international-3.0.0.Final.jar!/META-INF/beans.xml 4-apr-2011 23.27.15 org.jboss.seam.config.xml.bootstrap.XmlConfigExtension beforeBeanDiscovery INFO: Reading XML file: jar:file:/usr/tomcat/apache-tomcat-7.0.8/webapps/test-persistence1/WEB-INF/lib/seam-solder-3.0.0.Final.jar!/META-INF/beans.xml 4-apr-2011 23.27.15 org.jboss.weld.environment.servlet.Listener contextInitialized INFO: Tomcat 7 detected, CDI injection will be available in Servlets and Filters. Injection into Listeners is not supported 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.transaction.UTTransaction from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.servlet.http.HttpServletRequestContext from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.solder.core.VersionLoggerUtil from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.transaction.EntityTransaction from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.solder.resourceLoader.ResourceProvider from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.transaction.SeSynchronizations from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.international.locale.LocaleConfiguration from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.persistence.HibernatePersistenceProvider from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.servlet.ServletRequestContext from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.persistence.hibernate.HibernateManagedSessionExtensionImpl from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.transaction.NoTransaction from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.seam.solder.core.CoreExtension processAnnotatedType INFO: Preventing class org.jboss.seam.transaction.HibernateTransaction from being installed as bean due to @Veto annotation 4-apr-2011 23.27.16 org.jboss.interceptor.util.InterceptionTypeRegistry <clinit> AVVERTENZA: Class 'javax.ejb.PostActivate' not found, interception based on it is not enabled 4-apr-2011 23.27.16 org.jboss.interceptor.util.InterceptionTypeRegistry <clinit> AVVERTENZA: Class 'javax.ejb.PrePassivate' not found, interception based on it is not enabled 4-apr-2011 23.27.17 org.jboss.seam.international.status.TypedStatusMessageBundleExtension detectBundleInjectionTargets INFO: Add @MessageBundle to org.jboss.seam.solder.reflection.annotated.AnnotationBuilder.messages injection point for the type: org.jboss.seam.solder.support.SolderMessages 4-apr-2011 23.27.17 org.jboss.seam.international.status.TypedStatusMessageBundleExtension detectBundleInjectionTargets INFO: Add @MessageBundle to org.jboss.seam.solder.reflection.annotated.AnnotatedTypeBuilder.messages injection point for the type: org.jboss.seam.solder.support.SolderMessages 4-apr-2011 23.27.17 com.sun.faces.config.ConfigureListener contextInitialized INFO: Initializing Mojarra 2.0.4 (FCS b09) for context '/test-persistence1' 4-apr-2011 23.27.17 com.sun.faces.spi.InjectionProviderFactory createInstance INFO: JSF1048: PostConstruct/PreDestroy annotations present. ManagedBeans methods marked with these annotations will have said annotations processed. 4-apr-2011 23.27.17 org.apache.catalina.core.StandardContext startInternal GRAVE: Error listenerStart 4-apr-2011 23.27.17 org.apache.catalina.core.StandardContext startInternal GRAVE: Context [/test-persistence1] startup failed due to previous errors
localhost.log
4-apr-2011 23.27.17 org.apache.catalina.core.StandardContext listenerStart GRAVE: Exception sending context initialized event to listener instance of class org.jboss.weld.environment.servlet.Listener org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [EntityManager] with qualifiers [@Default] at injection point [[field] @Inject by.giava.repository.ConfigurationSession.em] at org.jboss.weld.bootstrap.Validator.validateInjectionPoint(Validator.java:305) at org.jboss.weld.bootstrap.Validator.validateBean(Validator.java:139) at org.jboss.weld.bootstrap.Validator.validateRIBean(Validator.java:162) at org.jboss.weld.bootstrap.Validator.validateBeans(Validator.java:385) at org.jboss.weld.bootstrap.Validator.validateDeployment(Validator.java:371) at org.jboss.weld.bootstrap.WeldBootstrap.validateBeans(WeldBootstrap.java:390) at org.jboss.weld.environment.servlet.Listener.contextInitialized(Listener.java:270) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4600) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5097) at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5092) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) 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:662)
What is my wrong in my code?
Thanks in advance
Fiorenzo