`
jackle_liu
  • 浏览: 147776 次
文章分类
社区版块
存档分类
最新评论

jboss4.x下的第一个ejb2.0程序(2)---使用log4j的无状态sessionBean

阅读更多
增加log4j...
 
首先将Hello.java改成:
package com.rox;
import java.rmi.RemoteException;
import javax.ejb.EJBException;
import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import org.apache.log4j.Logger;
 
/**
 * XDoclet-based session bean.  The class must be declared
 * public according to the EJB specification.
 *
 * To generate the EJB related files to this EJB:
 *  - Add Standard EJB module to XDoclet project properties
 *  - Customize XDoclet configuration for your appserver
 *  - Run XDoclet
 *
 * Below are the xdoclet-related tags needed for this EJB.
 *
 * @ejb.bean name="Hello"
 *           display-name="Name for Hello"
 *           description="Description for Hello"
 *           jndi-name="ejb/Hello"
 *           type="Stateless"
 *           view-type="remote"
 */
public class Hello implements SessionBean {
    /** The session context */
    private SessionContext context;
    private  final Logger log = Logger.getLogger(Hello.class);
    public Hello() {
        super();
        // TODO Auto-generated constructor stub
    }
    /**
     * Set the associated session context. The container calls this method
     * after the instance creation.
     *
     * The enterprise bean instance should store the reference to the context
     * object in an instance variable.
     *
     * This method is called with no transaction context.
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */
    public void setSessionContext(SessionContext newContext)
        throws EJBException {
        context = newContext;
        log.info("setSessionContext");
    }
    public void ejbCreate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
        log.info("ejb create");
    }
    public void ejbRemove() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
        log.info("ejb remove");
    }
    public void ejbActivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
        log.info("ejb activate");
    }
    public void ejbPassivate() throws EJBException, RemoteException {
        // TODO Auto-generated method stub
        log.info("ejb passivate");
    }
    /**
     * An example business method
     *
     * @ejb.interface-method view-type = "remote"
     *
     * @throws EJBException Thrown if method fails due to system-level error.
     */
    public String sayIt() throws EJBException {
        log.info("hello didi");
        return "hello didi.";
    }
}
 
  上面org.apache.log4j.Logger类继承自org.apache.log4j.Category类,log4j有三个重要的组件:categories, appenders和layouts.categories有各种方法来发送日志信息,可以将日志信息发送到控制台,文件,socket....,而这些终端就被称为appenders,可以理解为往内容中"append"的意思,layouts就是日志信息的格式,例如HTMLLayout就是html的格式.
  log4j输出日志是分级别(priority)的:debug,info,warn,error,fatal.这五个级别的等级由低到高,即如果配置文件的日志级别设置为debug时,所有log信息都会输出;而如果设置为fatal时只有fatal信息会输出,并且程序会终止运行.
  当运行EjbTest类时,会在控制台打印出:
11:43:00,587 INFO  [Hello] setSessionContext
11:43:00,587 INFO  [Hello] ejb create
11:43:00,603 INFO  [Hello] hello didi
 
1.从输出信息也可以看出无状态bean的回调方法(容器调用的方法)中,ejbActivate,ejbPassivate是不会被调用的.
2.如果再次调用EjbTest,控制台中只会输出
11:43:00,603 INFO  [Hello] hello didi
这说明jboss直接从缓存中取出已经实例化的ejb对象,而不是重新实例化.
3.如果将Hello.jar从deploy中移出,控制台将会输出ejb remove的信息.
如果要更改日志的输出级别,请更改jboss中deploy同级的conf目录中的log4j.xml.找到如下语句:
   <appender class="org.apache.log4j.ConsoleAppender" name="CONSOLE"></appender>
      <errorhandler class="org.jboss.logging.util.OnlyOnceErrorHandler"></errorhandler>
     
      INFO
"/>
      <layout class="org.apache.log4j.PatternLayout"></layout>
         <!---->
         %d{ABSOLUTE}
%-5p [%c{1}] %m%n"/>
     
  
将红色的INFO替换成其他的级别即可,jboss过几秒钟就会自动侦测到log4j.xml的变化,自动进行配置.
如果要改变日志输出的样式,可以改变以上内容中的兰色部分,假如去掉%-5p,你将会发现日志输出中将没有日志级别的信息.
 
 
   好了,到此日志输出部分划上句号,下一步将研究配合entiyBean使用.
分享到:
评论

相关推荐

    jboss下部署ejb详细步骤

    EJB是Java EE规范的一部分,它提供了一种标准的方式来实现业务逻辑,分为三种主要类型:会话Bean(Session Beans)、实体Bean(Entity Beans)和消息驱动Bean(Message-Driven Beans)。会话Bean用于处理客户端请求...

    EJB3.0所需jar文件(60多个)

    10. **其他辅助库**:比如日志框架(如`log4j.jar`)、连接池(如`c3p0.jar`)、JSON处理(如`json-lib.jar`)等。 使用这些jar文件,开发者可以在本地环境中设置EJB3.0开发环境,或者将它们打包到最终的应用程序中...

    JBOSS使用指南

    - 日志配置通常在`server/[config]/log`目录下的`jboss-log4j.properties`文件中进行设置。开发者可以根据需求调整日志级别、输出格式等。 **2. web服务的端口号的修改** - 修改端口号主要在`server/[config]/conf...

    struts1.1+ejb模拟项目

    10. **测试与调试**:学习使用JUnit对Action和EJB进行单元测试,以及如何使用日志工具(如Log4j)进行调试。 通过这个模拟项目,开发者可以深入理解Struts1.1和EJB在实际项目中的配合使用,提升在Java Web开发领域...

    struts2.1.8 + spring2.5.6 + hibernate3.3.2整合

    - `slf4j-log4j12-1.5.8.jar`: SLF4J到Log4J的桥接。 - `slf4j-simple-1.5.8.jar`: 简单的日志实现。 - `annotation3.4.jar`: 注解支持。 - `ejb3-persistence.jar`: EJB3持久化支持。 - `hibernate-annotations.jar...

    hibernate常用jar

    6. **slf4j-api.jar**和相应的实现库(如slf4j-log4j12.jar):Simple Logging Facade for Java (SLF4J) 提供了一种抽象层,允许开发者选择不同的日志框架作为其应用程序的日志解决方案。log4j则是具体的日志实现库...

    Expert One-on-One J2EE Design+and Development

    - Apache Log4j 1.2。 - JSP Standard Tag Library (JSTL) 1.0的一个实现。 #### 内容概览 - **引言**:介绍J2EE的基本概念、目标读者以及本书的组织结构。 - **第1章:J2EE架构**:详细讨论J2EE平台提供的多种...

    Expert+One-on-One+J2EE+Design+and+Development.pdf

    其他必要的软件包括Apache Log4j 1.2以及JSP标准标签库(JSTL)1.0的实现。 #### 二、主要内容概览 本书由Rod Johnson撰写,全面涵盖了J2EE设计与开发的关键技术方面。书中包含了以下核心章节: 1. **J2EE架构**...

    j2ee体系帮助文档大全

    3. **EJB技术**:深入剖析EJB3.x规范,涵盖无状态会话Bean、有状态会话Bean、实体Bean(容器管理的持久化和bean管理的持久化)以及消息驱动Bean的开发和部署。 4. **JMS与消息传递**:讲解如何利用JMS进行异步通信...

    Expert one-on-one J2EE Design and Development

    - Apache Log4j 1.2:用于日志记录,帮助开发者更好地追踪和调试应用程序。 - JSP Standard Tag Library (JSTL) 1.0:JSTL是一种标准的JSP标签库,用于简化JSP页面中的脚本代码。 #### 二、J2EE架构与项目选择 -...

    学习Java语言的30个参考,让你坐拥别人之上的30个擦考

    - **Log4J**:掌握日志记录工具的使用,记录程序运行时的重要信息。 - **Quartz**:学习任务调度框架的使用,实现定时任务。 ### 20. 分布式缓存与搜索 - **JCache**:了解分布式缓存的实现方法。 - **Lucene**:...

    JAVA企业级开发.zip

    Java企业级开发是一个涵盖广泛的领域,它涉及到使用Java语言构建大型、可扩展、高可用性的应用程序,这些应用程序通常运行在分布式环境中,如大型服务器集群。本压缩包“JAVA企业级开发.zip”包含了与这一主题相关的...

    Java JavaEE开源应用服务器 wildfly新特性与未来规划 共30页.pdf

    例如,EnterpriseJavaBean(EJB)由容器管理,可以是无状态的SessionBean,也可以是有状态的StatefulSessionBean,前者不保存请求状态,后者则为每个客户端保留状态。ManagedBean通过CDI(Context and Dependency ...

Global site tag (gtag.js) - Google Analytics