1 jboss 默认在DOS下启动是default的,这个要记得,要用all启动的话,可以这样 run -c all,否则dos下每次ant后的东西都会放错位置的了
2 一个简单的编译ejb服务端的脚本,用的是sun的J2EE SDK下的lib
<?xml version="1.0"?>
<project name="ejb" basedir="." default="">
<property name="jdk.root" value="C:\Sun\SDK"/>
<path id="classpath">
<fileset dir="${jdk.root}\lib">
<include name="*.jar"/>
</fileset>
<pathelement path="."/>
</path>
<target name="compile">
<javac destdir=".\build" debug="true" deprecation="false" optimize="false" failonerror="true">
<src path="."/>
<classpath refid="classpath"/>
</javac>
</target>
</project>
3 EJB组件打包
进入build目录下,jar -cvf XXX.jar ./*.,之后把jar文件COPY到jboss的default\deploy目录下即可.
4 EJB客户端的一个典型ant 脚本
<?xml version="1.0"?>
<project name="ejb" basedir="." default="">
<property name="jboss.root" value="C:\jboss421"/>
<property name="jdk.root" value="C:\Sun\SDK"/>
<path id="classpath">
<fileset dir="${jdk.root}\lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${jboss.root}\server\default\lib">
<include name="*.jar"/>
</fileset>
<fileset dir="${jboss.root}\server\default\deploy\ejb3.deployer">
<include name="*.jar"/>
</fileset>
<fileset dir="${jboss.root}\server\default\deploy\jboss-aop-jdk50.deployer">
<include name="*.jar"/>
</fileset>
<fileset dir="${jboss.root}\lib">
<include name="*.jar"/>
</fileset>
<fileset dir="..\ejb\build">
<include name="*.jar"/>
</fileset>
<pathelement path="."/>
</path>
<target name="compile">
<javac destdir="." debug="true" deprecation="false" optimize="false" failonerror="true">
<src path="."/>
<classpath refid="classpath"/>
</javac>
</target>
<target name="run" depends="compile ">
<java classname="Client" fork="true">
<classpath refid="classpath"/>
</java>
</target>
</project>
5 关于标注的问题:
分三类:
A 标注在接口里,比如
@Local
public interface HelloWorldLocal extends HelloWorld{}
B 在实现接口的类前加标记
@Stateless
@Local(HelloWorldLocal.class)
@Remote({HelloWorldRemote.clas,ICalc.class})
public class HelloWorldBean1
这里指出了从本地,从远程能够访问的接口类型
C 纯洁型
单纯用部署文件,象EJB2那样
6 无状态会话BEAN的三个状态
不存在,放在池里,被调用状态.比较重要的事件有@PostConstruct,@PreDestroy,分别是组件创始时和被销毁时
7 有状态的会话bean
同样,第一次调用时,是postconstruct事件,当被销毁时,则是predestroy事件了.而EJB2中的钝化事件,则这里
用prepassivate事件了,即一个EJB活动对象长时间不被使用了,当从活动状态切换到休眠状态时则激活这个事件了.
而postactive事件,则是从休眠状态再激活之的.