- 浏览: 527603 次
- 性别:
- 来自: 北京
最新评论
-
johnsontang:
同样碰到这样的问题,修改用户密码后就好了,估计是密码过期了。
oracle RAC ORA-03113 错误解决 -
zhangzijun1984:
赞!很快的了解了python对文件的大部分操作,以及pickl ...
Python文件操作读写文件 -
ZJ133520:
ftp的用户名口令是多少啊?
oracle 9i/10g安装包和PATCH下载地址汇总 -
jspc:
ok yes thanks
UltraEdit 不能复制粘贴 -
maincoolbo:
piaoxue_x 写道嗯,很详细,看看再说……
这 ...
Oracle归档日志删除
Ejb3.0学习笔记(在Jobss下运行Ejb)
什么是EJB?
全称是Enterprice JavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprice JavaBeans架构编写的应用是可伸的,事务性的,多用户安全的。采用Ejb编写的这些应用,可以部署在任何支持Enterprice JavaBeans 规范的服务器平台,如Jboss,WebLojic等。
Ejb是用来干什么的?
EJB 实际上是用来编写业务层的代码。
EJB的好处
EBJ为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式,它大大减少了我门的开发工作量。
有关EJB的书籍:1.EJB3.0入门经典 2.EJB3.0实例教程 电子版 :http://www.foshanshop.net
5.JavaEE 中的主流服务器
1.Jboss:是一个成熟的开源的准JavaEE应用服务器,在开源JavaEE应用服务器中所占的市场份额第一。如果你打算选用开源的JavaEE应用服务器,那么JBoss是最值得选择的。(4.2以上的版本)
2.Glassfish:是一个开源的JavaEE应用服务器,对JavaEE规范支持非常好,其运行性能比较高。因为发展时间相对较短,和JBoss有的一拼。
3.Weblogic:是市场占有率第一的商业JavaEE应用服务器,他具有出色的稳定性,并提供人性化的管理界面。但在EJB3.0的领域里,它比JBOSS差些,bug比较多。(10以上的版本)
4.Sun Application Server:商业JavaEE应用服务器,如果打算用商业应用服务器运行EJB3.0的话,这个很好的。
5.Oracle Application Server:商业JavaEE应用服务器,如果你的数据库是Oracle,要想兼容性更好,这个是不错的选择。
6.apusic应用服务器:这是国内的商业JavaEE应用服务器,主要在政府中占有份额。但开发文档太少。
注意:Tomcat目前只是Web容器,它不能运行EJB应用。
6.sping+hibernate同样提供了事务管理/持久化服务,好像没有必要使用EJB,这中说法对吗?
不对的。因为Ejb 设计的初衷是用于分布式场合,而Sping—开始就没有打算提供分布式功能。所以两者看似有竞争的关系,
但两者的实际上偏重点布同,像EJB比较适合用于大型的企业。为了避免业务功能的重复开发,有必要把业务独立处来,让多个信息系统共享一个业务中心,这样应用就需要具备分布式能力。
7.EJB3.0的运行环境(1.EJB3.应用需要运行在JDK1.5以上的版本)
1.安装JBoss之前要安装JAVA_HOME.
步骤:1.我的电脑》》属性》》高级》》环境变量,在‘在系统变量’里添加JAVA_HOME变量,值为JDK的安装路径,如 C:\java\jdk1.5.0_16
2.在“在系统变量”在添加CLASSPATH变量,值为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3.在系统变量栏里找到变量名为Path的选项,点’编辑’在变量值的末尾加:;%JAVA_HOME%\bin;
8.如何下载并安装Jobss
步骤:1.在Http://www.jboss.org/jbossas/downloads/ 官方网站下载最新版本的jboss.
2. 下载4.2.3最新版的Jobss,5.0还是适用版,打开连
3.Jdk1.6下载这个版本。Jdk1.5下载这个版 本的
4.解压后就将Jobss安装好了。 然后启动run.bat 就可以启动Jobss (如果没有错误信息表示启动成功)
5.在浏览器中敲Http://localhost:8080就可以进入管理后台了
6.给Jobss添加系统变量 在我的电脑---》属性—》高级—》》设置》》》变量名写:JBOSS_HOME >>>路径写JBOSSde
安装路径,
7.添加Bin 在变量值的末尾中写
9.Ejb3.0中的Bean
会话Bean(Session Bean)
分为:有状态的会话Bean;一个用户只能对一个实例
无状态会话Bean;性能好,bean的实例可以共多个用户使用
负责与客户端交互,是编写业务逻辑的地方,在会话Bean中可以通过JDBC直接操作数据库,大多数情况下都是通过实体bean来完成对数据库的操作。
实体bean(entity bean)
它实际属于Java持久回规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在的Hibernate,TopLink等ORM框架各自为营的局面。
消息驱动Bean(Message-driven bean)
它是专门用于异处理Java消息的组件,具有处理大量并法消息的能力。
10.如何开发一个无状态的会话Bean
开发工具:Eclipse IDE for Java EE
下载地址:Http://www.eclipse.org/downloads
开发EJB依赖的jar文件
可以在Jboss安装路径的client目录下找到通常会把client目录下所有的jar文件添加到项目的类路径下。
创建一个EJB项目
给项目导入Jar包
点击在Libraires中 Add External JARS添加Client的所有jar文件
开始开发一个无状态的的会话Bean
10.1.开始开发无状态的会话Bean
1.首先New一个接口
Public interface HelloWord{
Public String SayHello(String name);
}
import javax.ejb.Stateless;
import javax.ejb.Remote;
2.再创建一个实现类
@Stateless(实现EJB)
@Remote(HelloWorld.CLass)代表远程接口
Public class HelloWordBean implements HelloWord{
Public String SayHello(String name){
Return name+”你好,世界!”;
}}
在实现类中加入以上两句话就可以实现一个无状态的会话Bean
开发完成后对EJB进行打包,
通过集成工具进行打包
导出----》》选择Jar文件----》》下一步-选择文件—》》完成
生成一个jar文件
发布EJB
启动JBoss
在EJB的Default/Depoly目录下发布,将EJB的jar文件拷贝到Jboss的Depoly目录下完成EJB的部署,发布成功
11.开发EJB的客户端
public class EjbClient {
public static void main(String[] args) {
Properties props=new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming,provider,url", "localhost:1099");
try{
InitialContext ctx=new InitialContext(props);
HelloWorld helloworld=(HelloWorld)ctx.lookup("HelloWorldBean/remote");
System.out.println(helloworld.SayHello("老头?"));
}catch(NamingException e){
System.out.println(e.getMessage());
}
}
}
Jboss 默认生成的JNDI名称
当EJB 发布到Jboss上时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,Jboss就会按照规则默认的命名规侧为EJB生成全局的JNDI名称,默认为
本地接口:EAR-File-BASE—NAME/EJB-CLASS-NAME/LOCAL
远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
EAR-FILE-BASE为ear文件名,EJB—CLASS-NAME为EJB的非限定类名。
把HelloWorld 应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI名称是:HelloWorldBean/remote
如果把EJB应用打包成后缀为.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例:把HelloWorld 应用打包成HelloWrld.jar 文件,它的远程接口的JDNI名称是:
HelloWorldBean/remote
12.把Jboss集成进Eclipse
1.操作步骤:
在控制台中:1.右键 New->Server
2.选中你说需要的服务器版本
3.在JRE 中选中JDK的版本,Application ServerDirectory 中选中你jboss 的安装路径
4.下一步,然后完成。(Ctrl+C)可以关闭Jboss。
13.通过ANT提高EJB应用的开发效率
源码:<project name="HelloWorld" basedir=".">
<property name="src.dir" value="${basedir}\src" />
<property environment="env"/>
<property name="jboss.home" value="${env.JBOSS_HOME}"></property>
<property name="jboss.server.config" value="default"></property>
<property name="build.dir" value="{basedir}\build"/>
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar"/>
</fileset>
</path>
<target name="prepare">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
</target>
<target name="compile" depends="prepare" description="编译">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath"/>
</javac>
</target>
<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${basedir}\{ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar" description="发布EJB包">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
</target>
<target name="undeploy" description="卸载ejb">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/>
</target>
</project>
14.开发具有本地接口的无状态BEAN
1.开发具有Local接口的 Session Bean
通过远程接口调用EJB的过程,首先客户端需要与EJB建立起Socket通讯,在通信管道上他们之间需要来回发送IIOP协议消息,因为数据要在网络进行传输,存数据的Java对象必须要进行序列化。
Socket通讯
IIOP消息
在这个过程中,有网络通信的开销,协议解析的开销,对象序列化的开销。因为EJB是分布式技术,它允许客户端与ejb应用在
不同的机器上,所以这些性能开销也是必然的。但是在实际生产中,我门不可能避免这种情况:客户端与EJB应用运行在同一台机器上的同一个JBoss中。那么,这个时候客户端和EJB是否还进行网络通讯呢?不需要。这个时候客户端和EJB在同一个Jvm中,他们完全可以通过内存进行交互,可以避免上面的性能开销。于是,可以通过引入本地接口。通过本地接口调用EJB 直接在内存中交互。这样就可以避免因网络通信所造成的各种性能的开销。但是,只有客户端和EJB应用都在同一个Jvm内运行的时候,我们才能调用本地的接口,否则只能调用远程接口。只要客户端与ejb发布在同一个jboss中,我们就认为他们在同一个Jvm中。
2开发一个Local接口
步骤:1.建立一个动态的Java Web 项目,并创建一个Jsp也页面.
2.在页面中调用EJB应用
3.再在Web项目中右键 属性》》Java Build Path>>Project >>添加包含EJB接口的项目》》然后在再页面中导入包即可
4.再在Web项目中右键 Export>>War file>>保存在一个盘中
5.然后将刚才的war包粘贴到Jboss的发布目录下
6.然后启动Jboss,就可以运行了
15.开发有状态BEAN
1.在类的前面用 @Stateful (内--->磁盘较钝化,磁盘---->内存叫激活)
2.无状态Bean使用实例池技术管理Bean。
3.有状态Bean使用激活(activation)管理bean。(是要为每个用户创建一个BEAN实例,这个实例只能为这个用户服务,他是不能被其他的用户访问的)
开发完后部署到EJB容器中
16.通过注解方式并使用其他EJB或者服务
1在一个EJB中调用另外一个EJB
方法1;通过JNDI查找的方法
Eg: InitialContext ctx=new InitialContext();
Other other=(Other)ctx.lookup(“OtherBean/local”);
Other.XXX();
Other 是被调的EJB接口,OtherBean是被调EJB的实现类,
方法2:通过注解的方法调用另外一个EJB
在要调另外一个EJB的EJB中写上
@EJB Other other;
Other.XXXX();
注意:注解的工作原理:EJB容器解析到类的字段发现@后就去找是否有实现这个接口的EJB,然后将其注入进来。如果被两个EJB实现,将会抱个错,但是我们注入时可以这样注入
Eg; @EJB(beanName=”OtherBean”) Other other; Statefull(name=””)可以修改EJB名称
EJB的名称,即类名
2.如何注入定时服务
1>>.注入数据源:@Resource TImerService timerervice;
2>>.@Resource(mappedName=”java:XXX”) DataSource dataSource;
“ ”中用于指定数据源的JDNI名称;
17.配置JBOSS数据源
1.首先找到JBOSS的数据源配置模板,在JBOSS的安装目录下的Docs/examples/jca
2.修改JNDI名称 <jndi-name>itcastDS</jndi-name> 写自己创建的数据源的名称
<connection-url>jdbc:mysql://localhost:3306/数据库名称 </connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>x</user-name> 数据库的用户名和密码
<password>y</password>
2数据源的文件必须为XXX—ds.xml为结尾
3.将MySql的驱动文件拷贝到JBOSS目录下的Server/Default/lib目录下
4.重启JBoss,然后发布配置文件,将数据文件拷贝到JBOSS安装目录的Server/default/deploy下就可以了。
注意: 在Java:XXX后面的JDNI所绑定的资源,只能被JBoss的内部服务访问,不能被外部访问。
http://localhost:8080/jmx-console可以进行访问,然后找到Jboss.Jca 就可以找到我们刚才发布的数据源信息然后点击ManagedConnectionPool就可以进入数据源的连接属性
<min-pool-size>3</min-pool-size>
<max-pool-size>100</max-pool-size>
设置最大的连接数和最小的连接数,InUse ConnectionCount 正在使用的连接数量,如过和Max相等代表不够用要设大一些。
17.实体Bean 的开发
它属于Java持久化规范(简称JPA)里的技术,实体bean 通过元数据在javaBean和数据库表之间建立起映射关系,然后Java程序员就可以随心所欲的使用面向对象的编程来操纵数据库。JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,目前实现的JPA规范的主流产品有Hibernate,TopLink和OpenJPA,在jboss中采用了Hibernate作为其持久化实现产品。
根据JPA规范的要求,在实体bean应用中,我们需要在应用的类路径下的META-INF目录加入持久化配置文件persistence.xml.
什么是EJB?
全称是Enterprice JavaBeans是一个用于分布式业务应用的标准服务端组件模型。采用Enterprice JavaBeans架构编写的应用是可伸的,事务性的,多用户安全的。采用Ejb编写的这些应用,可以部署在任何支持Enterprice JavaBeans 规范的服务器平台,如Jboss,WebLojic等。
Ejb是用来干什么的?
EJB 实际上是用来编写业务层的代码。
EJB的好处
EBJ为我们提供了很多在企业开发中需要使用到的服务,如事务管理/安全/持久化/分布式,它大大减少了我门的开发工作量。
有关EJB的书籍:1.EJB3.0入门经典 2.EJB3.0实例教程 电子版 :http://www.foshanshop.net
5.JavaEE 中的主流服务器
1.Jboss:是一个成熟的开源的准JavaEE应用服务器,在开源JavaEE应用服务器中所占的市场份额第一。如果你打算选用开源的JavaEE应用服务器,那么JBoss是最值得选择的。(4.2以上的版本)
2.Glassfish:是一个开源的JavaEE应用服务器,对JavaEE规范支持非常好,其运行性能比较高。因为发展时间相对较短,和JBoss有的一拼。
3.Weblogic:是市场占有率第一的商业JavaEE应用服务器,他具有出色的稳定性,并提供人性化的管理界面。但在EJB3.0的领域里,它比JBOSS差些,bug比较多。(10以上的版本)
4.Sun Application Server:商业JavaEE应用服务器,如果打算用商业应用服务器运行EJB3.0的话,这个很好的。
5.Oracle Application Server:商业JavaEE应用服务器,如果你的数据库是Oracle,要想兼容性更好,这个是不错的选择。
6.apusic应用服务器:这是国内的商业JavaEE应用服务器,主要在政府中占有份额。但开发文档太少。
注意:Tomcat目前只是Web容器,它不能运行EJB应用。
6.sping+hibernate同样提供了事务管理/持久化服务,好像没有必要使用EJB,这中说法对吗?
不对的。因为Ejb 设计的初衷是用于分布式场合,而Sping—开始就没有打算提供分布式功能。所以两者看似有竞争的关系,
但两者的实际上偏重点布同,像EJB比较适合用于大型的企业。为了避免业务功能的重复开发,有必要把业务独立处来,让多个信息系统共享一个业务中心,这样应用就需要具备分布式能力。
7.EJB3.0的运行环境(1.EJB3.应用需要运行在JDK1.5以上的版本)
1.安装JBoss之前要安装JAVA_HOME.
步骤:1.我的电脑》》属性》》高级》》环境变量,在‘在系统变量’里添加JAVA_HOME变量,值为JDK的安装路径,如 C:\java\jdk1.5.0_16
2.在“在系统变量”在添加CLASSPATH变量,值为:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3.在系统变量栏里找到变量名为Path的选项,点’编辑’在变量值的末尾加:;%JAVA_HOME%\bin;
8.如何下载并安装Jobss
步骤:1.在Http://www.jboss.org/jbossas/downloads/ 官方网站下载最新版本的jboss.
2. 下载4.2.3最新版的Jobss,5.0还是适用版,打开连
3.Jdk1.6下载这个版本。Jdk1.5下载这个版 本的
4.解压后就将Jobss安装好了。 然后启动run.bat 就可以启动Jobss (如果没有错误信息表示启动成功)
5.在浏览器中敲Http://localhost:8080就可以进入管理后台了
6.给Jobss添加系统变量 在我的电脑---》属性—》高级—》》设置》》》变量名写:JBOSS_HOME >>>路径写JBOSSde
安装路径,
7.添加Bin 在变量值的末尾中写
9.Ejb3.0中的Bean
会话Bean(Session Bean)
分为:有状态的会话Bean;一个用户只能对一个实例
无状态会话Bean;性能好,bean的实例可以共多个用户使用
负责与客户端交互,是编写业务逻辑的地方,在会话Bean中可以通过JDBC直接操作数据库,大多数情况下都是通过实体bean来完成对数据库的操作。
实体bean(entity bean)
它实际属于Java持久回规范(简称JPA)里的技术,JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在的Hibernate,TopLink等ORM框架各自为营的局面。
消息驱动Bean(Message-driven bean)
它是专门用于异处理Java消息的组件,具有处理大量并法消息的能力。
10.如何开发一个无状态的会话Bean
开发工具:Eclipse IDE for Java EE
下载地址:Http://www.eclipse.org/downloads
开发EJB依赖的jar文件
可以在Jboss安装路径的client目录下找到通常会把client目录下所有的jar文件添加到项目的类路径下。
创建一个EJB项目
给项目导入Jar包
点击在Libraires中 Add External JARS添加Client的所有jar文件
开始开发一个无状态的的会话Bean
10.1.开始开发无状态的会话Bean
1.首先New一个接口
Public interface HelloWord{
Public String SayHello(String name);
}
import javax.ejb.Stateless;
import javax.ejb.Remote;
2.再创建一个实现类
@Stateless(实现EJB)
@Remote(HelloWorld.CLass)代表远程接口
Public class HelloWordBean implements HelloWord{
Public String SayHello(String name){
Return name+”你好,世界!”;
}}
在实现类中加入以上两句话就可以实现一个无状态的会话Bean
开发完成后对EJB进行打包,
通过集成工具进行打包
导出----》》选择Jar文件----》》下一步-选择文件—》》完成
生成一个jar文件
发布EJB
启动JBoss
在EJB的Default/Depoly目录下发布,将EJB的jar文件拷贝到Jboss的Depoly目录下完成EJB的部署,发布成功
11.开发EJB的客户端
public class EjbClient {
public static void main(String[] args) {
Properties props=new Properties();
props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
props.setProperty("java.naming,provider,url", "localhost:1099");
try{
InitialContext ctx=new InitialContext(props);
HelloWorld helloworld=(HelloWorld)ctx.lookup("HelloWorldBean/remote");
System.out.println(helloworld.SayHello("老头?"));
}catch(NamingException e){
System.out.println(e.getMessage());
}
}
}
Jboss 默认生成的JNDI名称
当EJB 发布到Jboss上时,如果我们没有为它指定全局JNDI名称或修改过其默认EJB名称,Jboss就会按照规则默认的命名规侧为EJB生成全局的JNDI名称,默认为
本地接口:EAR-File-BASE—NAME/EJB-CLASS-NAME/LOCAL
远程接口:EAR-FILE-BASE-NAME/EJB-CLASS-NAME/remote
EAR-FILE-BASE为ear文件名,EJB—CLASS-NAME为EJB的非限定类名。
把HelloWorld 应用作为EJB模块打包进名为HelloWorld.ear的企业应用文件,它的远程接口的JNDI名称是:HelloWorldBean/remote
如果把EJB应用打包成后缀为.jar的模块文件,默认的全局JNDI名称是
本地接口:EJB-CLASS-NAME/local
远程接口:EJB-CLASS-NAME/remote
例:把HelloWorld 应用打包成HelloWrld.jar 文件,它的远程接口的JDNI名称是:
HelloWorldBean/remote
12.把Jboss集成进Eclipse
1.操作步骤:
在控制台中:1.右键 New->Server
2.选中你说需要的服务器版本
3.在JRE 中选中JDK的版本,Application ServerDirectory 中选中你jboss 的安装路径
4.下一步,然后完成。(Ctrl+C)可以关闭Jboss。
13.通过ANT提高EJB应用的开发效率
源码:<project name="HelloWorld" basedir=".">
<property name="src.dir" value="${basedir}\src" />
<property environment="env"/>
<property name="jboss.home" value="${env.JBOSS_HOME}"></property>
<property name="jboss.server.config" value="default"></property>
<property name="build.dir" value="{basedir}\build"/>
<path id="build.classpath">
<fileset dir="${jboss.home}\client">
<include name="*.jar"/>
</fileset>
</path>
<target name="prepare">
<delete dir="${build.dir}"/>
<mkdir dir="${build.dir}"/>
</target>
<target name="compile" depends="prepare" description="编译">
<javac srcdir="${src.dir}" destdir="${build.dir}">
<classpath refid="build.classpath"/>
</javac>
</target>
<target name="ejbjar" depends="compile" description="创建EJB发布包">
<jar jarfile="${basedir}\{ant.project.name}.jar">
<fileset dir="${build.dir}">
<include name="**/*.class"/>
</fileset>
</jar>
</target>
<target name="deploy" depends="ejbjar" description="发布EJB包">
<copy file="${basedir}\${ant.project.name}.jar" todir="${jboss.home}\server\${jboss.server.config}\deploy"/>
</target>
<target name="undeploy" description="卸载ejb">
<delete file="${jboss.home}\server\${jboss.server.config}\deploy\${ant.project.name}.jar"/>
</target>
</project>
14.开发具有本地接口的无状态BEAN
1.开发具有Local接口的 Session Bean
通过远程接口调用EJB的过程,首先客户端需要与EJB建立起Socket通讯,在通信管道上他们之间需要来回发送IIOP协议消息,因为数据要在网络进行传输,存数据的Java对象必须要进行序列化。
Socket通讯
IIOP消息
在这个过程中,有网络通信的开销,协议解析的开销,对象序列化的开销。因为EJB是分布式技术,它允许客户端与ejb应用在
不同的机器上,所以这些性能开销也是必然的。但是在实际生产中,我门不可能避免这种情况:客户端与EJB应用运行在同一台机器上的同一个JBoss中。那么,这个时候客户端和EJB是否还进行网络通讯呢?不需要。这个时候客户端和EJB在同一个Jvm中,他们完全可以通过内存进行交互,可以避免上面的性能开销。于是,可以通过引入本地接口。通过本地接口调用EJB 直接在内存中交互。这样就可以避免因网络通信所造成的各种性能的开销。但是,只有客户端和EJB应用都在同一个Jvm内运行的时候,我们才能调用本地的接口,否则只能调用远程接口。只要客户端与ejb发布在同一个jboss中,我们就认为他们在同一个Jvm中。
2开发一个Local接口
步骤:1.建立一个动态的Java Web 项目,并创建一个Jsp也页面.
2.在页面中调用EJB应用
3.再在Web项目中右键 属性》》Java Build Path>>Project >>添加包含EJB接口的项目》》然后在再页面中导入包即可
4.再在Web项目中右键 Export>>War file>>保存在一个盘中
5.然后将刚才的war包粘贴到Jboss的发布目录下
6.然后启动Jboss,就可以运行了
15.开发有状态BEAN
1.在类的前面用 @Stateful (内--->磁盘较钝化,磁盘---->内存叫激活)
2.无状态Bean使用实例池技术管理Bean。
3.有状态Bean使用激活(activation)管理bean。(是要为每个用户创建一个BEAN实例,这个实例只能为这个用户服务,他是不能被其他的用户访问的)
开发完后部署到EJB容器中
16.通过注解方式并使用其他EJB或者服务
1在一个EJB中调用另外一个EJB
方法1;通过JNDI查找的方法
Eg: InitialContext ctx=new InitialContext();
Other other=(Other)ctx.lookup(“OtherBean/local”);
Other.XXX();
Other 是被调的EJB接口,OtherBean是被调EJB的实现类,
方法2:通过注解的方法调用另外一个EJB
在要调另外一个EJB的EJB中写上
@EJB Other other;
Other.XXXX();
注意:注解的工作原理:EJB容器解析到类的字段发现@后就去找是否有实现这个接口的EJB,然后将其注入进来。如果被两个EJB实现,将会抱个错,但是我们注入时可以这样注入
Eg; @EJB(beanName=”OtherBean”) Other other; Statefull(name=””)可以修改EJB名称
EJB的名称,即类名
2.如何注入定时服务
1>>.注入数据源:@Resource TImerService timerervice;
2>>.@Resource(mappedName=”java:XXX”) DataSource dataSource;
“ ”中用于指定数据源的JDNI名称;
17.配置JBOSS数据源
1.首先找到JBOSS的数据源配置模板,在JBOSS的安装目录下的Docs/examples/jca
2.修改JNDI名称 <jndi-name>itcastDS</jndi-name> 写自己创建的数据源的名称
<connection-url>jdbc:mysql://localhost:3306/数据库名称 </connection-url>
<driver-class>com.mysql.jdbc.Driver</driver-class>
<user-name>x</user-name> 数据库的用户名和密码
<password>y</password>
2数据源的文件必须为XXX—ds.xml为结尾
3.将MySql的驱动文件拷贝到JBOSS目录下的Server/Default/lib目录下
4.重启JBoss,然后发布配置文件,将数据文件拷贝到JBOSS安装目录的Server/default/deploy下就可以了。
注意: 在Java:XXX后面的JDNI所绑定的资源,只能被JBoss的内部服务访问,不能被外部访问。
http://localhost:8080/jmx-console可以进行访问,然后找到Jboss.Jca 就可以找到我们刚才发布的数据源信息然后点击ManagedConnectionPool就可以进入数据源的连接属性
<min-pool-size>3</min-pool-size>
<max-pool-size>100</max-pool-size>
设置最大的连接数和最小的连接数,InUse ConnectionCount 正在使用的连接数量,如过和Max相等代表不够用要设大一些。
17.实体Bean 的开发
它属于Java持久化规范(简称JPA)里的技术,实体bean 通过元数据在javaBean和数据库表之间建立起映射关系,然后Java程序员就可以随心所欲的使用面向对象的编程来操纵数据库。JPA的出现主要是为了简化现有的持久化开发工作和整合ORM技术,目前实现的JPA规范的主流产品有Hibernate,TopLink和OpenJPA,在jboss中采用了Hibernate作为其持久化实现产品。
根据JPA规范的要求,在实体bean应用中,我们需要在应用的类路径下的META-INF目录加入持久化配置文件persistence.xml.
发表评论
-
linux redhat5安装jdk
2011-09-20 13:38 18521.安装 我这里下载的是jdk-6u13-linux-i ... -
eclipse 图标的含义,记录一下
2011-02-24 09:52 2013Objects Compilation ... -
在MyEclipse中启动Tomcat访问网页时出现503错误
2011-01-12 14:44 5599MyEclipse中设置好Tomcat的相关选项后, ... -
Tomcat优化方案
2011-01-07 10:33 1842Tomcat优化方案 调优方案分类: 1,外部环境调优 2, ... -
http https 区别
2010-09-20 10:58 1345HTTPS(Secure Hypertext Tran ... -
MyEclipse 的 优化大法
2010-09-13 16:54 1010MyEclipse 优化 相信大家在启动MyEc ... -
Eclipse+MyEclipse总是显示quick update的解决办法
2010-09-02 08:34 2597这个问题的解决办法是关闭自动更新 Windows > ... -
Java Applet签名验证
2010-08-19 16:50 3489本系统的客户程序是Java Applet,但它的执行需要读本地 ... -
数据库连接池的好处
2010-08-04 11:37 1195关键字: 数据库 对 ... -
Eclipse 快捷键
2010-05-27 11:41 882Eclipse 快捷键 Ctrl+1 快速修复(最经典的快捷 ... -
MyEclipse总是显示quick update的解决办法
2010-05-27 09:01 254这个问题的解决办法是关闭自动更新 Windows &g ... -
Java中的native关键字浅析(Java Native Interface)
2010-05-21 09:50 6772native关键字用法 native是与C++联合开 ... -
String 与StringBuffer的区别
2010-05-14 14:30 1092:String 与StringBuffer的区 ... -
WebService是什么
2010-04-01 14:23 2255WebService是什么? We ... -
UltraEdit 不能复制粘贴
2010-03-30 15:38 12365UltraEdit 是每天必用的工 ... -
Java面试题xxx
2010-03-17 11:16 5790文章分类:Java编程 一、 ... -
使用Java组件itext 生成pdf介绍
2010-02-23 13:11 2015iText是一个能够快速产生PDF文件的java类库。iTe ... -
Java常碰面试题
2010-01-27 11:53 12741、jsp和servlet的区别、 ... -
Oracle中JDBC对BLOB和CLOB读取的专用处理和通用处理
2009-12-25 10:14 2523设有表: create table blobimg (id i ... -
java排序
2009-11-18 13:46 1547这个编辑器不错哈 0.排序基类 /** ...
相关推荐
**知识点1:什么是EJB?** - **定义**:EJB是一种组件架构和模型,用于开发面向对象的分布式企业级应用程序。 - **特点**: - 面向服务的架构; - 支持多种中间件服务,如事务管理、持久化、并发控制等; - 使得...
#### 什么是EJB? EJB(Enterprise JavaBeans)并非一款具体的产品,而是Java平台在企业级应用开发领域的一套规范。这套规范为开发者提供了构建可扩展、健壮的企业级应用的指导原则。EJB定义了一个服务框架,允许...
#### 什么是EJB? EJB(Enterprise Java Beans)是一种标准规范,由Sun Microsystems制定,用于构建和部署企业级、分布式应用程序的组件模型。EJB框架为企业应用程序提供了一种模块化的组件结构,允许开发者专注于...
因为EJB是J2EE重要的组成部分,可以说没有EJB的J2EE只是一种Web系统,这样的系统非常容易丧失了多层结构的大部分优点(仔细想想那些混合多种层次功能JavaBeans和传统两层结构有什么区别?)。当然,可以人为地在...
**什么是企业JavaBeans技术?** 企业JavaBeans (EJB) 是Java平台上的服务器端组件模型,专为构建可扩展、可靠且跨平台的企业级应用程序而设计。通过将业务逻辑与基础架构关注点(如事务管理、安全性、持久性和并发...
3. 什么是 EJB?EJB(Enterprise JavaBean)是 Java 企业版中的一个组件,用于实现业务逻辑。 四、Java EE 1. 什么是 EJB 和 JAVA BEAN 的区别? EJB 和 JAVA BEAN 都是 SUN 的不同组件规范,EJB是在容器中运行的...
### EJB技术详解 #### EJB 2.0与EJB 1.1的主要区别及其应用场景 EJB(Enterprise JavaBeans)技术自1998年首次推出以来,经历了多个版本的演进,其中EJB 2.0是EJB 1.1的重要升级版,带来了诸多改进和新特性,旨在...
javax.ejb.AccessLocalException.class javax.ejb.CreateException.class javax.ejb.DuplicateKeyException.class javax.ejb.EJBContext.class javax.ejb.EJBException.class javax.ejb.EJBHome.class javax.ejb....
【实战角度比较EJB2和EJB3的架构异同】 EJB,即Enterprise JavaBeans,是Java EE(企业版Java)平台的核心组件之一,用于构建可复用、分布式的服务器端应用程序。EJB2和EJB3是EJB技术的两个主要版本,它们在架构上...
Files contained in javax.ejb.jar: META-INF/MANIFEST.MF javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout.class javax.ejb.ActivationConfigProperty.class javax.ejb.AfterBegin.class javax....
【EJB】全称是Enterprise JavaBeans,是Java EE(Java Platform, Enterprise Edition)的一部分,旨在为开发企业级分布式应用程序提供一套标准框架。EJB最初由Sun Microsystems提出,它定义了一种组件模型,允许...
EJB中ejb-jar文件配置详解 EJB(Enterprise JavaBean)是一种Java技术,用于开发企业级应用程序。EJB容器提供了许多功能,如事务处理、安全认证、资源管理等,以便开发者更方便地开发企业级应用程序。在EJB中,ejb-...
### EJB2.0与EJB3.0的主要区别 #### 一、简介 企业Java Beans(EJB)是Java平台为企业级应用提供的一种组件模型。随着技术的发展,EJB经历了多个版本的迭代,其中EJB 2.0和EJB 3.0是两个重要的里程碑版本。本文将...
【标题】"Idea搭建EJB架构Demo项目源代码"涉及的是使用IntelliJ IDEA(简称Idea)这个强大的Java集成开发环境来构建一个基于EJB(Enterprise JavaBeans)架构的示例项目。EJB是Java EE(企业版)平台的核心部分,...
META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.properties META-INF / maven / org.glassfish.main.ejb / javax.ejb / pom.xml javax.ejb.AccessLocalException.class javax.ejb.AccessTimeout....
EJB集群是EJB技术的一个重要特性,它允许EJB容器(如JBOSS)在多台服务器上分布和复制EJB实例,以实现高可用性和负载均衡。 在给定的示例中,我们看到一个简单的无状态会话Bean(Stateless Session Bean)`...
### EJB原理图详解 #### 一、EJB工作原理概览 EJB(Enterprise JavaBeans)是Java EE平台中的一个重要组成部分,它主要用于构建企业级应用。EJB提供了一种面向服务的方式,允许开发者专注于业务逻辑,而将复杂的...
有哪些类型的EJB? - Session Beans(会话bean):表示业务逻辑,分为Stateful(有状态)和Stateless(无状态)。 - Entity Beans(实体bean):持久化对象,代表数据库中的记录。 - Message-driven Beans(消息...
**EJB3(Enterprise JavaBeans 3)是Java EE(Enterprise Edition)平台中用于构建企业级应用程序的重要组件模型。这个PPT教程详细介绍了EJB3的各种核心概念和技术,旨在帮助学习者掌握EJB3的核心特性并能实际应用到...