科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道部署基于JBoss的J2EE应用程序(1)

部署基于JBoss的J2EE应用程序(1)

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

本文结合作者的开发经验,给出在JBoss3.2.1下开发J2EE的一些很实用的相关的注意事项和规则。

作者:佚名 来源:赛迪网 2007年12月10日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

3、Tomcat容器相关参数的配置

如果使用JBoss3.2.1与Tomcat4.1.24的集成版本,则可以通过调节分别位于目录:C:\jboss-3.2.1_tomcat-4.1.24\server\default\deploy\jbossweb-tomcat.sar下的web.xml和目录:C:\jboss-3.2.1_tomcat-4.1.24\server\default\deploy\jbossweb-tomcat.sar\META-INF下的jboss-service.xml文件来达到目标读者特定需求。比如,如果想将HTTP服务端口改为80,则可以修改jboss-service.xml文件;如果想使目标J2EE应用处理更多的文件类型,可以修改web.xml文件。

4、相关类库的放置

如果应用涉及到第三方类库,比如JDBCDriver,则可以将这些JDBCDriver存放到目录下:C:\jboss-3.2.1_tomcat-4.1.24\server\default\lib。注意,不是目录:C:\jboss-3.2.1_tomcat-4.1.24\lib下。

如果是与目标J2EE应用相关,则可以存放到目标.war(或者.ear)里面,或者xxx.war目录中的WEB-INFO\lib下。无论那种情形,都需要遵循J2EE规范。当然,JBoss 3.2.1的配置文件有很多,比如还有提供邮件服务的mail-service.xml文件等。

二、开发EJB应用

如果开发EJB应用,建议采用JBoss作为开发服务器,因为开发、调试、部署速度快。如果采用其他商用服务器,由于实现机理的不同,其编译的速度很慢。如果采用EntityBeans技术,则您需要知道这几点。第一,您目标系统的数据源有多少个操作入口,即是否存在EntityBeans之外的方式来操作数据库。如果有,则需要调节相应的提交策略以及策略。

比如,JBoss 3.2.1采用的方式有4种:A、B、C、D。当然,如果除了EntityBeans访问数据库外,别无它出,采用A是很理智的。如果有,则需要取决于具体的情况使用方式。同时,方式的选择与策略有关系。能够采用的EntityBeans或EntityBeansMethods,则尽量采用,这样会减少或消除死锁发生的可能性。尽量采用1:n的关系来操作n方的数据表结构,这样能够提高EJBContainer的效率。

一般情况下,J2EE应用服务器支持JDBC事务、JTA事务、容器管理事务。同时,最好不要在程序中同时使用上述三种事务类型,比如在JTA事务中嵌套JDBC事务;第二方面,事务要在尽可能短的时间内完成,不要在不同方法中实现事务的使用。比如,下面给出了回滚JDBC事务的代码示例:

publicvoidprocessT(Stringorders){
ContextinitCtx=newInitialContext();
javax.sql.DataSourceds=javax.sql.DataSource)initCtx.lookup
(“java:comp/env/jdbc/OrdersDB”);
java.sql.Connectionconn=ds.getConnection();
try{
conn.setAutoCommit(false);//更改JDBC事务的默认提交方式
orderNo=createOrder(orders);
updateOrderStatus(orderNo,“orderscreated”);
conn.commit();//提交JDBC事务
}catch(Exceptione){
try{
conn.rollback();//回滚sJDBC事务
thrownewEJBException(“事务回滚:“ e.getMessage());
}catch(SQLExceptionsqle){
thrownewEJBException(“出现SQL操作错误:“ sqle.getMessage());
}
}
}

下面给出了JTA事务代码示例:

publicvoidprocessOrder(StringorderMessage){
UserTransactiontransaction=mySessionContext.getUserTransaction();//获得JTA事务
try{
transaction.begin();//开始JTA事务
orderNo=sendOrder(orderMessage);
updateOrderStatus(orderNo,“ordersent”);
transaction.commit();//提交JTA事务
}catch(Exceptione){
try{
transactio

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章