采用eclipse+jboss开发ejb3.0学习笔记

<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600"><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype><v:shape id="_x0000_i1025" style="WIDTH: 414.75pt; HEIGHT: 268.5pt" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\pengch\LOCALS~1\Temp\msohtml1\01\clip_image001.emz"></v:imagedata></v:shape>

<o:p> </o:p>

1     Properties properties = new Properties();

       properties.put("java.naming.factory.initial",

                       "org.jnp.interfaces.NamingContextFactory");

       properties.put("java.naming.factory.url.pkgs",

                       "org.jboss.naming:org.jnp.interfaces");

       properties.put("java.naming.provider.url", "jnp://localhost:1099");

       properties.put("jnp.disableDiscovery", "true");

<o:p> </o:p>

         

      InitialContext ctx = new InitialContext(properties);

注意:初始化InitialContext时必须加上其上一个属性。

<o:p> </o:p>

2.

实现类的命名规则是:接口+Bean ,如: HelloWorldBean<o:p></o:p>

<o:p> </o:p>

3.JNDI的组成规则是“上层名称/下层名称”,每层之间以”/”分隔,<o:p></o:p>

http://localhost:8080/jmx-console点击“service=JNDIView 然后点java.lang.String list()  下的“invoke”按钮就会出现<o:p></o:p>

<o:p> </o:p>

<o:p> </o:p>

<v:shape id="_x0000_i1026" style="WIDTH: 6in; HEIGHT: 63pt" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\pengch\LOCALS~1\Temp\msohtml1\01\clip_image003.emz"></v:imagedata></v:shape>

这就是所谓的上下层名称。

<o:p> </o:p>

<o:p> </o:p>

其他一些命名规则:

<v:shape id="_x0000_i1027" style="WIDTH: 414.75pt; HEIGHT: 144.75pt" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\pengch\LOCALS~1\Temp\msohtml1\01\clip_image005.emz"></v:imagedata></v:shape><v:shape id="_x0000_i1028" style="WIDTH: 415.5pt; HEIGHT: 49.5pt" type="#_x0000_t75"><v:imagedata o:title="" src="file:///C:\DOCUME~1\pengch\LOCALS~1\Temp\msohtml1\01\clip_image007.emz"></v:imagedata></v:shape>

<o:p> 采用eclipse+jboss开发ejb3.0学习笔记_第1张图片</o:p>

<o:p> </o:p>

<o:p> </o:p>

4

 Stateless Session Bean不负责记录使用者状态,Stateless Session Bean 一旦实例化就被加进会话池中,各个用户都可以用。即使用户已经消亡,Stateless Session Bean的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。如果它有自己的的属性(变量),那么这些变量就会受以所有调用它遥用户的影响。

<o:p> </o:p>

 Stateful  Session Bean 是一个可以维持自身状态的会话Bean。每个用户都有自己的的一个实例,在用户的生存期内,Stateful Session Bean保持了用户的信息,也就是“有状态”;一旦用户灭亡(调用结束或实例结束),即每个用户最初都会得到一个初始化的Stateful Session Bean.

大家注意stateful session bean 必须实现Serializable 接口,这样EJB 容器才能在她们不再使用时序列化存储她们的状态信息.<o:p></o:p>

<o:p> </o:p>

5.上面介绍了JNDI的默认命名规则,有时要自定义JNDI,可以使用@LocalBinding@RemoteBinding注释<o:p></o:p>

如:@RemoteBinding (jndiBinding="foshanshop/RemoteOperation")<o:p></o:p>

<o:p> </o:p>

Operation operation = (Operation) ctx.lookup("foshanshop/RemoteOperation");<o:p></o:p>

<o:p> </o:p>

6.<o:p></o:p>

@Interceptors 注释指定一个或多个在外部类中定义的拦截器,如果写在类上表示对该类所有方法实旄拦截。<o:p></o:p>

<o:p> </o:p>

7<o:p></o:p>

import com.foshanshop.ejb3.HelloWorld;

import com.foshanshop.ejb3.Injection;

<o:p> </o:p>

import javax.ejb.EJB;

import javax.ejb.Remote;

import javax.ejb.Stateless;

<o:p> </o:p>

@Stateless

@Remote ({Injection.class})

public class InjectionBean implements Injection {

    @EJB (beanName="HelloWorldBean")

    HelloWorld helloworld;

  

    public String SayHello() { 

        return helloworld.SayHello("注入者");

    }

}

<o:p> </o:p>

@EJB注释的beanName属性指定EJB的类名(不带包名),他的另一个属性mappedName指定Bean实例的JNDI<o:p></o:p>

<o:p> </o:p>

7<o:p></o:p>

消息驱动Bean(MDB)是设计用来专门处理基于消息请求的组件。一个MDB类必须实现MessageListener 接口。<o:p></o:p>

当一个业务执行的时间很长,而执行结果无需实时向用户反馈时,很适合使用消息驱动Bean

<o:p> </o:p>

@MessageDriven(activationConfig =

{

  @ActivationConfigProperty(propertyName="destinationType",

    propertyValue="javax.jms.Queue"),

  @ActivationConfigProperty(propertyName="destination",

    propertyValue="queue/foshanshop")

})

<o:p> </o:p>

8.对于Entity Bean

首先,要对数据源进行配置,各数据库的数据配置模板在[Jboss安装目录]\docs\examples\jca 目录中找到,默认名称为:数据库名+ -ds.xml 。数据库的驱动类Jar包放置在[Jboss 安装目录]\server\all\lib 目录下,放置后需要启动Jboss服务器。数据源文件配置好后需要放置在[jboss安装目录]/server/config-name/deploy目录下。如:<o:p></o:p>

Mysql-ds.xml<o:p></o:p>

<datasources>

  <local-tx-datasource>

    <jndi-name>DefaultMySqlDS</jndi-name>

//    DefaultMySqlDS就是设置的数据源的JNDI名。 <connection-url>jdbc:mysql://localhost:3306/foshanshop?useUnicode=true&amp;characterEncoding=GBK</connection-url>

    <driver-class>com.mysql.jdbc.Driver</driver-class>

    <user-name>root</user-name>

    <password>root</password>

    <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name>

    <!-- should only be used on drivers after <st1:chsdate w:st="on" isrocdate="False" islunardate="False" day="30" month="12" year="1899">3.22.1</st1:chsdate> with "ping" support

    <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name>

    -->

    <!-- sql to call when connection is created

    <new-connection-sql>some arbitrary sql</new-connection-sql>

      -->

    <!-- sql to call on an existing pooled connection when it is obtained from pool - MySQLValidConnectionChecker is preferred for newer drivers

    <check-valid-connection-sql>some arbitrary sql</check-valid-connection-sql>

      -->

<o:p> </o:p>

    <!-- corresponding type-mapping in the standardjbosscmp-jdbc.xml (optional) -->

    <metadata>

       <type-mapping>mySQL</type-mapping>

    </metadata>

  </local-tx-datasource>

</datasources>

然后,配置persistence.xml文件,把实体类和persistence.xml文件打成Jarpersistence.xml 放在jar 文件的META-INF目录。如<o:p></o:p>

<persistence><o:p></o:p>

  <persistence-unit name="foshanshop"><o:p></o:p>

<jta-data-source>java:/DefaultMySqlDS</jta-data-source><o:p></o:p>

// DefaultMySqlDS就是数据库配置文件中定义的JNDI名。<o:p></o:p>

    <properties><o:p></o:p>

      <property name="hibernate.hbm2ddl.auto" value="create-drop"/><o:p></o:p>

    </properties><o:p></o:p>

  </persistence-unit><o:p></o:p>

</persistence><o:p></o:p>

 

你可能感兴趣的:(eclipse,bean,jboss,F#,ejb)