在Tomcat中使用EmbeddedJBoss

新发布的Seam2.0 使用了最新版的EmbeddedJBoss beta2,这一版本与之前在Tomcat中配置EmbededJBoss有很大不同。

0、下载:

可以从sourceforge.net 下载,解压缩后目录结构如下:

├─docs
├─bootstrap
│  ├─conf
│  ├─data
│  ├─deploy
│  └─deployers
├─lib
└─optional-lib

1、配置:

在%tomcat_home%/conf/server.xml中增加如下监听器: 用于启动EmbeddedJBoss,再向%tomcat_home%/conf/context.xml文件中添加如下监听器:

xml 代码
  1. <!-- -->     
  2. stener  className = "org.jboss.embedded.tomcat.WebinfScanner"   />   


2、copy资源——配置文件及jar:

以上配置完成后,Tomcat会经由EmbeddedJBossBootstrapListener启动EmbeddedJBoss,并WebinfScanner扫描WEB-INF下的classes和lib目录 发现并部署JavaEE组件。在 启动EmbeddedJBoss时需要配置文件在bootstrap目录下,copy该目录下除jndi.properties之外的 所有文件到%tomcat_home%/lib;请拷贝lib目录下的jar文件到%tomcat_home%/lib目录下,一共有4个jar文件:

  • jboss-embedded-tomcat-bootstrap.jar ,包括以上提到的两个监听器及相关class,该jar在lib目录下;
  • jboss-embedded-all.jar ,EmbeddedJBoss的实现类,在lib目录下 ;(注意:该jar包不适合JDK1.6使用,若你使用JDK1.6请下载Signature.java 文件,Signature.java, 编译後覆更新到jboss-embedded-all.jar中即可 );
  • thirdparty-all.jar ,第三方类的集成包 在lib目录下;
  • hibernate-all.jar ,Hibernate、JPA实现;

至此EmbeddedJBoss配置完成,启动Tomcat就可以从日志中看到EmbeddedJBoss的日志信息。

3、配置JNDI数据源:

正如以上所述 WebinfScanner会扫描WEB-INF目录,所以向%AppName%\WEB-INF\classes下加入XXX-ds.xml文件可配置数据源:以下是配置Dearby数据源的配置文件,

  1. <? xml   version = "1.0"   encoding = "UTF-8" ?>   
  2. < datasources >   
  3.     < local-tx-datasource >   
  4.        < jndi-name > iAppDBDS </ jndi-name >   
  5.        <!-- The driverclass and connurl -->   
  6.        < driver-class > org.apache.derby.jdbc.ClientDriver </ driver-class >   
  7.        < connection-url > jdbc:derby://localhost/iAppDB; create = true </ connection-url >   
  8.          
  9.        <!-- The login and password -->   
  10.        < user-name > admin </ user-name >   
  11.        < password > sasa </ password >   
  12.   
  13.        <!-- The maximum connections in a pool/sub-pool -->   
  14.        < min-pool-size > 0 </ min-pool-size >   
  15.        < max-pool-size > 20 </ max-pool-size >   
  16.   
  17.     </ local-tx-datasource >   
  18. </ datasources >   

再启动Tomcat 从日志中可以看出该数据源绑定至java:/iAppDBDS,可经由一下JSP代码获得:

j
  1. Context context =  new  InitialContext();   
  2. Object oo =  null ;   
  3. try {   
  4.     oo = context.lookup( "java:iAppDBDS" );   
  5.     System.out.println( "oo:"  + oo);   
  6. } catch (Exception e){   
  7.     System.out.println(e.getMessage());   
  8. }   
  9. //out.print("java:iAppDBDS = <h1>"+ oo + "</h1>");   
  10. if  (oo !=  null ) {   
  11.     DataSource ds = (DataSource) oo;   
  12.     Connection conn = ds.getConnection();   
  13.      if (conn !=  null ){   
  14.         System.out.println( "conn:"  + conn);   
  15.         out.print( "0-ds.getConnection = <h1>"  + conn +  "</h1>" );   
  16.         conn.close();   
  17.     } else {   
  18.         out.print( "<h1>Get Connection Error~.</h1>" );   
  19.     }   
  20. } else {   
  21.     out.print( "<h1>Get InitialContext Error~.</h1>" );   
  22. }  

EmbeddedJBoss代替了Tomcat的JNDI实现。

4、发布位置:

App的发布位置必须在%tomcat_home%\webapps\下,否则JavaEE组件不能被发现,所以使用WTP 默认情况下会有问题,需要将WTP中的发布位置修改成%tomcat_home%\webapps\ 才可以。

或者可以把%tomcat_home%/conf/context.xml文件copy到WTP创建的Server目录中,即和server.xml放在一起。



你可能感兴趣的:(tomcat,Hibernate,jboss,OO,Derby)