pom.xml
<?xml version="1.0" encoding="UTF-8"?> <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/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.lucaster.jeewp</groupId> <artifactId>javaeeWebProject</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <name>Java EE 6 webapp project</name> <description>A starter Java EE 6 webapp project for use on JBoss AS 7.1 / EAP 6, generated from the jboss-javaee6-webapp archetype</description> <properties> <!-- Explicitly declaring the source encoding eliminates the following message: --> <!-- [WARNING] Using platform encoding (UTF-8 actually) to copy filtered resources, i.e. build is platform dependent! --> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <!-- Define the version of JBoss' Java EE 6 APIs and Tools we want to import. --> <jboss.bom.version>1.0.0.M7</jboss.bom.version> <!-- Alternatively, comment out the above line, and un-comment the line below to use version 1.0.0.M7-redhat-1 which is a release certified to work with JBoss EAP 6. It requires you have access to the JBoss EAP 6 maven repository. --> <!-- <jboss.bom.version>1.0.0.M7-redhat-1</jboss.bom.version>> --> <seam.version>3.1.0.Final</seam.version> <freemarker.version>2.3.9</freemarker.version> <org.apache.httpcomponents.version>4.2</org.apache.httpcomponents.version> </properties> <dependencyManagement> <dependencies> <!-- JBoss distributes a complete set of Java EE 6 APIs including a Bill of Materials (BOM). A BOM specifies the versions of a "stack" (or a collection) of artifacts. We use this here so that we always get the correct versions of artifacts. Here we use the jboss-javaee-6.0-with-tools stack (you can read this as the JBoss stack of the Java EE 6 APIs, with some extras tools for your project, such as Arquillian for testing) and the jboss-javaee-6.0-with-hibernate stack you can read this as the JBoss stack of the Java EE 6 APIs, with extras from the Hibernate family of projects) --> <dependency> <groupId>org.jboss.bom</groupId> <artifactId>jboss-javaee-6.0-with-tools</artifactId> <version>${jboss.bom.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.jboss.bom</groupId> <artifactId>jboss-javaee-6.0-with-hibernate</artifactId> <version>${jboss.bom.version}</version> <type>pom</type> <scope>import</scope> </dependency> <dependency> <groupId>org.jboss.seam</groupId> <artifactId>seam-bom</artifactId> <version>${seam.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <repositories> <!-- For PrimeFaces --> <repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <url>http://repository.primefaces.org</url> <layout>default</layout> </repository> <!-- For Seam --> <repository> <id>jboss-public</id> <url>http://repository.jboss.org/nexus/content/groups/public-jboss/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories> <dependencies> <!-- First declare the APIs we depend on and need for compilation. All of them are provided by JBoss AS 7 --> <!-- Import the CDI API, we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>javax.enterprise</groupId> <artifactId>cdi-api</artifactId> <scope>provided</scope> </dependency> <!-- Import the Common Annotations API (JSR-250), we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>org.jboss.spec.javax.annotation</groupId> <artifactId>jboss-annotations-api_1.1_spec</artifactId> <scope>provided</scope> </dependency> <!-- Import the JAX-RS API, we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>org.jboss.spec.javax.ws.rs</groupId> <artifactId>jboss-jaxrs-api_1.1_spec</artifactId> <scope>provided</scope> </dependency> <!-- Import the JPA API, we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>org.hibernate.javax.persistence</groupId> <artifactId>hibernate-jpa-2.0-api</artifactId> <scope>provided</scope> </dependency> <!-- Import the EJB API, we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>org.jboss.spec.javax.ejb</groupId> <artifactId>jboss-ejb-api_3.1_spec</artifactId> <scope>provided</scope> </dependency> <!-- JSR-303 (Bean Validation) Implementation --> <!-- Provides portable constraints such as @Email --> <!-- Hibernate Validator is shipped in JBoss AS 7 --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator</artifactId> <scope>provided</scope> <exclusions> <exclusion> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </exclusion> </exclusions> </dependency> <!-- Import the JSF API, we use provided scope as the API is included in JBoss AS 7 --> <dependency> <groupId>org.jboss.spec.javax.faces</groupId> <artifactId>jboss-jsf-api_2.1_spec</artifactId> <scope>provided</scope> </dependency> <!-- Now we declare any tools needed --> <!-- Annotation processor to generate the JPA 2.0 metamodel classes for typesafe criteria queries --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-jpamodelgen</artifactId> <scope>provided</scope> </dependency> <!-- Annotation processor that raising compilation errors whenever constraint annotations are incorrectly used. --> <dependency> <groupId>org.hibernate</groupId> <artifactId>hibernate-validator-annotation-processor</artifactId> <scope>provided</scope> </dependency> <!-- Needed for running tests (you may also use TestNG) --> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <scope>test</scope> </dependency> <!-- Optional, but highly recommended --> <!-- Arquillian allows you to test enterprise code such as EJBs and Transactional(JTA) JPA from JUnit/TestNG --> <dependency> <groupId>org.jboss.arquillian.junit</groupId> <artifactId>arquillian-junit-container</artifactId> <scope>test</scope> </dependency> <dependency> <groupId>org.jboss.arquillian.protocol</groupId> <artifactId>arquillian-protocol-servlet</artifactId> <scope>test</scope> </dependency> <!-- PrimeFaces and PrimeFaces Mobile. PrimeFaces version is still 9.2 for compatibility with Mobile 0.9.2 0.9.3 will be compatible with 3.3 --> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>3.2</version> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces-mobile</artifactId> <version>0.9.2</version> </dependency> <!-- Seam Solder module now includes also Seam Catch module, Seam Config module, Seam Solder Logging module and Seam Servlet module --> <dependency> <groupId>org.jboss.solder</groupId> <artifactId>solder-api</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.solder</groupId> <artifactId>solder-impl</artifactId> <scope>runtime</scope> </dependency> <!-- Seam Persistence module --> <dependency> <groupId>org.jboss.seam.persistence</groupId> <artifactId>seam-persistence-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.persistence</groupId> <artifactId>seam-persistence</artifactId> <scope>runtime</scope> </dependency> <!-- Seam Faces module and its dependencies --> <dependency> <groupId>org.jboss.seam.faces</groupId> <artifactId>seam-faces-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.faces</groupId> <artifactId>seam-faces</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> <dependency> <groupId>com.ocpsoft</groupId> <artifactId>prettyfaces-jsf2</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.persistence</groupId> <artifactId>seam-persistence-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.persistence</groupId> <artifactId>seam-persistence</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.security</groupId> <artifactId>seam-security-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.security</groupId> <artifactId>seam-security</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-api</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> </dependency> <!-- Seam Security module and its dependencies --> <dependency> <groupId>org.jboss.seam.security</groupId> <artifactId>seam-security-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.security</groupId> <artifactId>seam-security</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-api</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-core</artifactId> </dependency> <dependency> <groupId>org.drools</groupId> <artifactId>drools-compiler</artifactId> </dependency> <!-- Seam Validation module --> <dependency> <groupId>org.jboss.seam.validation</groupId> <artifactId>seam-validation-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.validation</groupId> <artifactId>seam-validation</artifactId> <scope>runtime</scope> </dependency> <!-- Seam Mail module and its dependencies --> <dependency> <groupId>org.jboss.seam.mail</groupId> <artifactId>seam-mail-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.mail</groupId> <artifactId>seam-mail</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> </dependency> <dependency> <groupId>freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency> <!-- Seam Remoting module and its dependentices (seam-remoting-api doesn't exist --> <dependency> <groupId>org.jboss.seam.remoting</groupId> <artifactId>seam-remoting</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.international</groupId> <artifactId>seam-international</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>joda-time</groupId> <artifactId>joda-time</artifactId> </dependency> <!-- Seam Social module --> <dependency> <groupId>org.jboss.seam.social</groupId> <artifactId>seam-social-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.social</groupId> <artifactId>seam-social</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.social</groupId> <artifactId>seam-social-facebook</artifactId> <version>${seam.version}</version> </dependency> <dependency> <groupId>org.jboss.seam.social</groupId> <artifactId>seam-social-linkedin</artifactId> <version>${seam.version}</version> </dependency> <dependency> <groupId>org.jboss.seam.social</groupId> <artifactId>seam-social-twitter</artifactId> <version>${seam.version}</version> </dependency> <!-- Seam JMS module (requires standalone-full.xml)--> <dependency> <groupId>org.jboss.seam.jms</groupId> <artifactId>seam-jms-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.jms</groupId> <artifactId>seam-jms</artifactId> <scope>runtime</scope> </dependency> <!-- Seam JCR module --> <dependency> <groupId>org.jboss.seam.jcr</groupId> <artifactId>seam-jcr-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.jcr</groupId> <artifactId>seam-jcr</artifactId> <scope>runtime</scope> </dependency> <!-- Seam Reports module --> <dependency> <groupId>org.jboss.seam.reports</groupId> <artifactId>seam-reports-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.reports</groupId> <artifactId>seam-reports-jasper</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.reports</groupId> <artifactId>seam-reports-pentaho</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.jboss.seam.reports</groupId> <artifactId>seam-reports-xdocreport</artifactId> <scope>runtime</scope> </dependency> <!-- Seam REST module --> <!-- To solve "Multiple TemplatingProviders found on classpath. Select the prefered one." add this to seam-beans.xml: --> <!-- <beans xmlns:rest="urn:java:org.jboss.seam.rest:org.jboss.seam.rest.exceptions"> <rest:SeamRestConfiguration preferedTemplatingProvider="org.jboss.seam.rest.templating.freemarker.FreeMarkerProvider"/> </beans> --> <dependency> <groupId>org.jboss.seam.rest</groupId> <artifactId>seam-rest-api</artifactId> </dependency> <dependency> <groupId>org.jboss.seam.rest</groupId> <artifactId>seam-rest</artifactId> <scope>runtime</scope> </dependency> <dependency> <groupId>org.apache.velocity</groupId> <artifactId>velocity</artifactId> </dependency> <dependency> <groupId>freemarker</groupId> <artifactId>freemarker</artifactId> <version>${freemarker.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpcore</artifactId> <version>${org.apache.httpcomponents.version}</version> </dependency> <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>${org.apache.httpcomponents.version}</version> </dependency> </dependencies> <build> <!-- Maven will append the version to the finalName (which is the name given to the generated war, and hence the context root) --> <finalName>${project.artifactId}</finalName> <plugins> <!-- Compiler plugin enforces Java 1.6 compatibility and activates annotation processors --> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>2.3.1</version> <configuration> <source>1.6</source> <target>1.6</target> </configuration> </plugin> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <!-- Java EE 6 doesn't require web.xml, Maven needs to catch up! --> <failOnMissingWebXml>false</failOnMissingWebXml> </configuration> </plugin> <!-- The JBoss AS plugin deploys your war to a local JBoss AS container --> <!-- To use, run: mvn package jboss-as:deploy --> <plugin> <groupId>org.jboss.as.plugins</groupId> <artifactId>jboss-as-maven-plugin</artifactId> <version>7.1.1.Final</version> </plugin> </plugins> </build> <profiles> <profile> <!-- The default profile skips all tests, though you can tune it to run just unit tests based on a custom pattern --> <!-- Seperate profiles are provided for running all tests, including Arquillian tests that execute in the specified container --> <id>default</id> <activation> <activeByDefault>true</activeByDefault> </activation> <build> <plugins> <plugin> <artifactId>maven-surefire-plugin</artifactId> <version>2.4.3</version> <configuration> <skip>true</skip> </configuration> </plugin> </plugins> </build> </profile> <profile> <!-- An optional Arquillian testing profile that executes tests in your JBoss AS instance --> <!-- This profile will start a new JBoss AS instance, and execute the test, shutting it down when done --> <!-- Run with: mvn clean test -Parq-jbossas-managed --> <id>arq-jbossas-managed</id> <dependencies> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-managed</artifactId> <scope>test</scope> </dependency> </dependencies> </profile> <profile> <!-- An optional Arquillian testing profile that executes tests in a remote JBoss AS instance --> <!-- Run with: mvn clean test -Parq-jbossas-remote --> <id>arq-jbossas-remote</id> <dependencies> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-remote</artifactId> <scope>test</scope> </dependency> </dependencies> </profile> <profile> <!-- When built in OpenShift the 'openshift' profile will be used when invoking mvn. --> <!-- Use this profile for any OpenShift specific customization your app will need. --> <!-- By default that is to put the resulting archive into the 'deployments' folder. --> <!-- http://maven.apache.org/guides/mini/guide-building-for-different-environments.html --> <id>openshift</id> <build> <plugins> <plugin> <artifactId>maven-war-plugin</artifactId> <version>2.1.1</version> <configuration> <outputDirectory>deployments</outputDirectory> <warName>ROOT</warName> </configuration> </plugin> </plugins> </build> </profile> </profiles> </project>
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" xsi:schemaLocation=" http://java.sun.com/xml/ns/javaee http://docs.jboss.org/cdi/beans_1_0.xsd" xmlns:rest="urn:java:org.jboss.seam.rest:org.jboss.seam.rest.exceptions" xmlns:mail="urn:java:org.jboss.seam.mail.core"> <!-- Requires Seam REST module dependencies to work --> <rest:SeamRestConfiguration preferedTemplatingProvider="org.jboss.seam.rest.templating.freemarker.FreeMarkerProvider"/> <!-- Requires Seam Mail module dependencies to work --> <mail:MailConfig serverHost="my-server.test.com" serverPort="25" username="abcdef" password="123456" > <s:modifies /> </mail:MailConfig> </beans>
If you have both Seam Mail and one or more among Seam Persistence, Seam Security, Seam Faces, building you project will give these errors:
Error Sun Jun 03 15:06:14 CEST 2012 Errors running builder 'CDI (Context and Dependency Injection) Builder' on project 'javaeeWebProject'. java.lang.NullPointerException at org.jboss.tools.cdi.seam.core.persistence.CDISeamPersistenceExtension.buildBeans(CDISeamPersistenceExtension.java:109) at org.jboss.tools.cdi.internal.core.impl.CDIProject.update(CDIProject.java:1121) at org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext.applyWorkingCopy(DefinitionContext.java:390) at org.jboss.tools.cdi.core.CDICoreBuilder.build(CDICoreBuilder.java:230) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
eclipse.buildId=unknown java.version=1.6.0_31 java.vendor=Sun Microsystems Inc. BootLoader constants: OS=win32, ARCH=x86, WS=win32, NL=en_GB Framework arguments: -product com.jboss.jbds.product.product Command-line arguments: -os win32 -ws win32 -arch x86 -product com.jboss.jbds.product.product Error Sun Jun 03 15:06:14 CEST 2012 Problems occurred when invoking code from plug-in: "org.eclipse.core.resources". java.lang.NullPointerException at org.jboss.tools.cdi.seam.core.persistence.CDISeamPersistenceExtension.buildBeans(CDISeamPersistenceExtension.java:109) at org.jboss.tools.cdi.internal.core.impl.CDIProject.update(CDIProject.java:1121) at org.jboss.tools.cdi.internal.core.impl.definition.DefinitionContext.applyWorkingCopy(DefinitionContext.java:390) at org.jboss.tools.cdi.core.CDICoreBuilder.build(CDICoreBuilder.java:230) at org.eclipse.core.internal.events.BuildManager$2.run(BuildManager.java:728) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:199) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:239) at org.eclipse.core.internal.events.BuildManager$1.run(BuildManager.java:292) at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42) at org.eclipse.core.internal.events.BuildManager.basicBuild(BuildManager.java:295) at org.eclipse.core.internal.events.BuildManager.basicBuildLoop(BuildManager.java:351) at org.eclipse.core.internal.events.BuildManager.build(BuildManager.java:374) at org.eclipse.core.internal.events.AutoBuildJob.doBuild(AutoBuildJob.java:143) at org.eclipse.core.internal.events.AutoBuildJob.run(AutoBuildJob.java:241) at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
Despite those, the build process will complete successfully and you’ll be able to deploy the app on JBoss AS 7.1.1.Final