2011-05-20 79 views
1

正如我的标题已经解释过的,我想知道如何结合这些技术?Maven,JEE6,Tomcat 7/Glassfish 3.1,EJB,JSF2,Hibernate/JPA和PrettyFaces

我已经尝试过JEE6-Maven-Glassfish-EJB-JSF2-Hibernate-PrettyFaces组合,但问题是glassfish mojarra实现无法通过pom.xml替换为更新的版本,并且包含的​​mojarra版本可以不适用于美观。反正在一个真正的系统上,我会更换内部的罐子,让这个工作。

现在我正在尝试组合JEE6-Maven-Tomcat-EJB-JSF2-Hibernate-Prettyfaces,但不知何故EJB无法正常工作。我知道Apache并没有提供一个jsf实现,所以我在最新的mojarra实现中添加了对pom的依赖。

tomcat还有一个奇怪的行为,我尝试在上下文路径“/”上部署webapp,并使用firefox获取tomcat启动页面加载localhost:8080并使用chrome获取我的应用程序视图。可能是什么问题呢?

在这里你可以看到我的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>com.pkg</groupId> 
<artifactId>App</artifactId> 
<version>1.0</version> 
<packaging>war</packaging> 

<name>App</name> 

<properties> 
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir> 
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
    <netbeans.hint.deploy.server>Tomcat70</netbeans.hint.deploy.server> 
</properties> 

<repositories> 
    <repository> 
     <id>JBoss</id> 
     <name>JBoss Repsitory</name> 
     <layout>default</layout> 
     <url>http://repository.jboss.org/maven2</url> 
    </repository> 

    <repository> 
     <id>jboss-snapshot</id> 
     <url>http://snapshots.jboss.org/maven2</url> 
     <releases> 
     </releases> 
     <snapshots> 
     </snapshots> 
    </repository> 

    <repository> 
     <url>http://download.java.net/maven/2/</url> 
     <id>hibernate-support</id> 
     <layout>default</layout> 
     <name>Repository for library Library[hibernate-support]</name> 
    </repository> 
</repositories> 

<dependencies> 
    <dependency> 
     <groupId>log4j</groupId> 
     <artifactId>log4j</artifactId> 
     <version>1.2.15</version> 
     <exclusions> 
      <exclusion> 
       <groupId>javax.mail</groupId> 
       <artifactId>mail</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>javax.jms</groupId> 
       <artifactId>jms</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jdmk</groupId> 
       <artifactId>jmxtools</artifactId> 
      </exclusion> 
      <exclusion> 
       <groupId>com.sun.jmx</groupId> 
       <artifactId>jmxri</artifactId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-core</artifactId> 
     <version>3.3.2.GA</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-annotations</artifactId> 
     <version>3.4.0.GA</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-commons-annotations</artifactId> 
     <version>3.3.0.ga</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate-entitymanager</artifactId> 
     <version>3.3.2.GA</version> 
    </dependency> 

    <dependency> 
     <groupId>org.hibernate</groupId> 
     <artifactId>hibernate</artifactId> 
     <version>3.2.5.ga</version> 
    </dependency> 

    <dependency> 
     <groupId>mysql</groupId> 
     <artifactId>mysql-connector-java</artifactId> 
     <version>5.0.5</version> 
    </dependency> 

    <dependency> 
     <groupId>com.ocpsoft</groupId> 
     <artifactId>prettyfaces-jsf2</artifactId> 
     <version>3.2.0</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.sql</groupId> 
     <artifactId>jdbc-stdext</artifactId> 
     <version>2.0</version> 
    </dependency> 

    <dependency> 
     <groupId>javax.transaction</groupId> 
     <artifactId>jta</artifactId> 
     <version>1.0.1B</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-api</artifactId> 
     <version>2.1.1-b04</version> 
    </dependency> 
    <dependency> 
     <groupId>com.sun.faces</groupId> 
     <artifactId>jsf-impl</artifactId> 
     <version>2.1.1-b04</version> 
    </dependency> 
    <dependency> 
     <groupId>javax</groupId> 
     <artifactId>javaee-web-api</artifactId> 
     <version>6.0</version> 
     <scope>provided</scope> 
    </dependency> 

    <dependency> 
     <groupId>junit</groupId> 
     <artifactId>junit</artifactId> 
     <version>4.8.1</version> 
     <scope>test</scope> 
    </dependency> 
</dependencies> 

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-compiler-plugin</artifactId> 
      <version>2.3.2</version> 
      <configuration> 
       <source>1.6</source> 
       <target>1.6</target> 
       <compilerArguments> 
        <endorseddirs>${endorsed.dir}</endorseddirs> 
       </compilerArguments> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-war-plugin</artifactId> 
      <version>2.1</version> 
      <configuration> 
       <failOnMissingWebXml>false</failOnMissingWebXml> 
      </configuration> 
     </plugin> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-dependency-plugin</artifactId> 
      <version>2.1</version> 
      <executions> 
       <execution> 
        <phase>validate</phase> 
        <goals> 
         <goal>copy</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>${endorsed.dir}</outputDirectory> 
         <silent>true</silent> 
         <artifactItems> 
          <artifactItem> 
           <groupId>javax</groupId> 
           <artifactId>javaee-endorsed-api</artifactId> 
           <version>6.0</version> 
           <type>jar</type> 
          </artifactItem> 
         </artifactItems> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
    <finalName>App</finalName> 
</build> 

回答

4

为什么不升级GlassFish Mojarra JAR?

  • 下载新钻嘴鱼科http://javaserverfaces.java.net/download.html
  • 关机的GlassFish 3
  • 替换的 glassfishv3/GlassFish中/模块与新钻嘴鱼科的文件 JSF目录中的钻嘴鱼科的文件JSF-impl.jar中和JSF-api.jar文件-impl.jar和jsf-api.jar。
  • 在GlassFish删除一切/域/域1/OSGi的缓存目录
  • 开始的GlassFish
  • 验证时JSF应用程序启动字符串新钻嘴鱼科2.xx的出现在了GlassFish 日志文件

http://forums.netbeans.org/post-97832.html#97832

0

这奇怪的是,你会得到这样的在不同的浏览器相同的上下文两个不同的Web应用程序。此时我会怀疑一个或多个浏览器以某种方式返回缓存页面。您是否尝试在两个浏览器中清除浏览器缓存并重试?

随着Glassfish,我取代了与我需要的Mojarra版本捆绑在一起的Mojarra jar文件。这是正确的事情。

然而,您可以用JEE6来阐述您的问题吗? Glassfish 3.1应该符合JEE6标准,那么究竟是什么“不适合你”呢?

+0

随着Tomcat 7的注入EJB不起作用,我用@EJB注释一个字段,但对象不注入。我没有尝试只替换glassfish中的库,但知道如何让我的应用程序在tomcat中运行会有所帮助。在同一个上下文中有两个不同输出的问题是缓存问题。 – 2011-05-20 11:44:04

+2

Tomcat是一个servlet容器,不是一个EJB容器。但是Tomcat确实存在可以提供JEE支持的扩展。查看OpenEJB项目。 http://openejb.apache.org/ – 2011-05-20 12:21:34

+0

谢谢!可能Glassfish或Jboss AS将成为我的选择。 – 2011-05-20 13:34:46