本文作者:admin

什么是EJB组件?

芯岁网络 2024-09-12 23:11 0 0条评论

一、什么是EJB组件?

我的理解JAVABEAN就是简单的由GET和SET方法(即相关的属性)和一些接口,就是形成独立的对象。

下面是EJB的定义:

EJB是设计成运行在服务器上,并由客户机调用的非可视远程对象。可通过多个非可视JavaBean构建EJB。它们有一个部署描述符,其目的与JavaBean属性相同:它是以后可由工具读取的bean的描述。EJB还独立于平台,一旦编写好,还可以在任何支持Java的平台(包括客户机和服务器)上使用。

按我的理解EJB(企业级JAVABEAN)就是JAVABEAN的集合,他可以让所有人共享是个独立的部分,现在许多地方都用到EJB。

二、EJB还有人用吗?

应该有吧~

但在国内这种浮躁,追求华而不实目的是效益而非产品本身内在品质的应用环境中,个人感觉,

对企业java bean的研究、以EJB为主导的应用一定不多。。

三、ejb文件是什么意思?

EJB是sun的服务器端组件模型,最大的用处是部署分布式应用程序,类似微软的.com技术。凭借java跨平台的优势,用EJB技术部署的分布式系统可以不限于特定的平台。

EJB (Enterprise JavaBean)是J2EE的一部分,定义了一个用于开发基于组件的企业多重应用程序的标准。其特点包括网络服务支持和核心开发工具(SDK)。

在J2EE里,Enterprise Java Beans(EJB)称为Java 企业Bean,是Java的核心代码,分别是会话Bean(Session Bean),实体Bean(Entity Bean)和消息驱动Bean(MessageDriven Bean)。

1.Session Bean用于实现业务逻辑,它可以是有状态的,也可以是无状态的。每当客户端请求时,容器就会选择一个Session Bean来为客户端服务。Session Bean可以直接访问数据库,但更多时候,它会通过Entity Bean实现数据访问。

2.Entity Bean是域模型对象,用于实现O/R映射,负责将数据库中的表记录映射为内存中的Entity对象,事实上,创建一个Entity Bean对象相当于新建一条记录,删除一个Entity Bean会同时从数据库中删除对应记录,修改一个Entity Bean时,容器会自动将Entity Bean的状态和数据库同步。

3.MessageDriven Bean是EJB2.0中引入的新的企业Bean,它基于JMS消息,只能接收客户端发送的JMS消息然后处理。MDB实际上是一个异步的无状态Session Bean,客户端调用MDB后无需等待,立刻返回,MDB将异步处理客户请求。这适合于需要异步处理请求的场合,比如订单处理,这样就能避免客户端长时间的等待一个方法调用直到返回结果。

EJB实际上是SUN的J2EE中的一套规范,并且规定了一系列的API用来实现把EJB概念转换成EJB产品.EJB是BEANS,BEANS是什么概念,那就是得有一个容纳她,让她可劲造腾的地方,就是得有容器.EJB必须生存在EJB容器中.这个容器可是功能强大之极!她首先要包装你BEAN,EJB的客户程序实际上从来就不和你编写的EJB直接打交道,他们之间是通过HOME/REMOTE接口来发生关系的.它负责你的BEAN的所有的吃喝拉萨睡,比如BEAN的持续化,安全性,事务管理...

四、Java技术EJB调用原理是什么?

它太长了,我简短的来说比如做一个工程就和盖房子,如果,你会java,那么你就拥有了基本的技能,一步一步累砖,总能把房子盖好但是EJB就是一个框架,盖房子的时候,先有这个框架,然后你根据这个框架去累砖,房子就会盖的又快又好。java是基础,EJB是在java上发展出来的模型,框架。

五、ejb组建部署描述文件的作用?

顾名思义嘛,就是指导部署的过程如何配置这个 ejb 程序,因为 EJB 是组件化的模型,同时 EJB 有些资源依赖和外部 EJB 引用这些都是包括了自己的定义的一些静态配置,同时另外还有一些与服务器厂商有关系的外部绑定配置及一些角色授权配置。比如 J2EE 1.3 要求一个 ear 程序不做任何代码修改只能过修改部署描述符文件后就部署到服务器上成2个要求同时工作的两个完全独立的应用程序,这时我们把 EJB 绑定修改一下就可以了,把它们连接的数据引用绑定也修改一下,我们就可以为多个不同的客户部署完全相同的一个 ear 代码并且各自使用不同的数据库,而且在同一台物理机器同一个服务器的同一个 JVM 进程中正常工作互相不影响。

应用服务器是作为 J2EE 应用的一个”平台“,平台就不应该具体到应用程序内部细节而是在外部保证它们都要通用,互不影响地工作,J2EE 标准规范就是为了让每家J2EE服务器厂商有一个兼容的工作方式。

而且部署描述符打包在 ear 或 ejb 中只是一个推荐的默认值,在部署过程中服务器提供的部署向导一般给允许我们定制它把这些默认值改成其它的,而不需要先解压这个 ear/ejb 改了 xml 再重新打包,这样原始的 ear/ejb 不需要变化,保持版本不动,在部署过程上定制就很方便了。

六、万网的JSP主机是否支持EJB?

"很抱歉,万网的JSP主机不支持EJB,支持的是J2SE的标准。

J2SE即Java标准版(J2SE,Java 2 Platform Standard Edition),用于桌面软件系统的开发,以及中等规模的应用。

"

七、EJB有状态的会话Bean和无状态的会话Bean的区别?

在EJB里面,会话Bean分为两种,一种是有状态的会话Bean,另一种是无状态的会话Bean,本节主要讲解一下两者之间的区别。

对于有状态的会话Bean,这种情况属于,服务端与你单独开辟了一块空间与你进行交互。而客户端感觉服务端单独为他自己服务似的。而无状态的会话Bean,则服务端不提供了一个资源但是谁用都行,他不负责。所以客户端在使用的时候,则会感到这个服务 与其他人共享似的。

服务端

分别创建一个有状态的会话bean和一个无状态的会话 Bean。

新建一个EJB项目

新建项目1

新建项目2

然后创建两个接口,两个实现。(分别是有状态和无状态)

有状态会话Bean的接口和实现:

public interface StatefulEjb {

public void compute(int i);

public int getResult();

}

@Stateful

@Remote(StatefulEjb.class)

public class StatefulEjbBean implements StatefulEjb {

private int state;

public void compute(int i) {

state += i;

}

public int getResult() {

return state;

}

}

无状态会话Bean的接口和实现:

public interface StatelessEjb {

public void compute(int i);

public int getResult();

}

@Stateless

@Remote(StatelessEjb.class)

public class StatelessEjbBean implements StatelessEjb{

private int state;

public void compute(int i) {

state += i;

}

public int getResult() {

return state;

}

}

创建完之后的结构如下:

服务端接口

之后部署到JBOSS上,(我用的版本是jboss-5.0.1.GA)然后启动JBOSS这样服务端就搭建好了。

客户端

创建一个Java项目,然后添加一个main方法,这个就不详细说了。分别测试有状态的会话Bean和无状态的会话Bean。

1、创建java项目(略)

2、修改环境,需要添加jar包。(jboss安装包里根目录里面client里面的所有jar包)

客户端代码

//测试有状态的会话Bean

public class StatefulEjbClient {

public static void main(String[] args) throws NamingException {

//第一次会话

InitialContext context = new InitialContext();

StatefulEjb ejb1= (StatefulEjb) context.lookup("StatefulEjbBean/remote");

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

//第二次会话

StatefulEjb ejb2= (StatefulEjb) context.lookup("StatefulEjbBean/remote");

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

ejb2.compute(1);

System.out.println(ejb2.getResult());

}

}

测试结果:

有状态的会话Bean测试结果

//测试无状态的会话Bean

public class StatelessEjbClient {

public static void main(String[] args) throws NamingException {

//第一次会话

InitialContext context = new InitialContext();

StatelessEjb ejb1= (StatelessEjb) context.lookup("StatelessEjbBean/remote");

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

ejb1.compute(1);

System.out.println(ejb1.getResult());

//第二次会话

StatelessEjb ejb2= (StatelessEjb) context.lookup("StatelessEjbBean/remote");

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

ejb1.compute(1);

System.out.println(ejb2.getResult());

}

}

测试结果:

无状态的会话Bean测试结果

对比上述的两个结果:

有状态的会话Bean,每一个会话 都是一个新的开始。而无状态的会话Bean 每个会话用的时候都会接着用上一次的会话。

有状态会话bean :每个用户有自己特有的一个实例,在用户的生存期内,bean保持了用户的信息,即“有状态”;一旦用户灭亡(调用结束或实例结束),bean的生命期也告结束。即每个用户最初都会得到一个初始的bean。

无状态会话bean :bean一旦实例化就被加进会话池中,各个用户都可以共用。即使用户已经消亡,bean 的生命期也不一定结束,它可能依然存在于会话池中,供其他用户调用。由于没有特定的用户,那么也就不能保持某一用户的状态,所以叫无状态bean。但无状态会话bean 并非没有状态,如果它有自己的属性(变量),那么这些变量就会受到所有调用它的用户的影响,这是在实际应用中必须注意的。

八、如何在自己的linux服务器上搭建邮件服务器?

记录一次搭建邮箱服务器,实在是太快了

背景

今天妹子要拉着我给做一个量化分析的平台,我寻思我连股票都不懂那还怎么做。她说一步一个jo印,慢慢来。我也就只好答应了,那就先按照预警平台来建着,她去补充专业知识去了,这也就是非常合理的分工了。

我想着要弄预警平台,无论怎么着报警的时候也要有邮件通知和短信通知吧,那就先从这入手。在网上找了好一些邮箱服务器,感觉写的很破烂,最后找到了这个小z博客(使用Docker搭建poste,自建邮件服务器 - 小z博客),写的非常好,依着他的流程,30分钟就建设完了。因为实在是太快了,忍不住写一个文章记录一下。

部署docker

默认大家的服务器有独立的IP和域名(如果连着都没有一般也不会想着去搭邮箱服务器),是linux操作系统的,已经安装了docker。

部署这一段:

docker run -d \
    -p 880:80 -p 8443:443 -p 25:25 -p 110:110 -p 143:143 -p 465:465 -p 587:587 -p 993:993 -p 995:995 -p 4190:4190 \
    -e TZ=Asia/Shanghai \
    -v /data/mail-data:/data \
    --name "mailserver" \
    -h "mail.your-domain.com" \
    --restart=always \
    -t analogic/poste.io

http://mail.your-domain.com 这里记得填写自己实际的域名。

一般要当邮箱服务器的,域名都会是mail开头,这个稍微注意点。

这段代码里,用880和8443来当暴露端口,目的是为了不占用80和443.

以上,就没有的内容。

剩下就是登陆:

https://mail.your-domain.com:8443 中去进行设置账户密码等。

DNS设定

服务器本身的设定很简单,稍微复杂一点的是DNS云解析中的设定:

1 要将pop,smtp,imap,都进行CNAME指向http://mail.your-domain.com上。

2 设定MX,让http://your-domain.com指向http://mail.your-domain.com,这也算是邮箱特殊的一种设定。

3 在邮箱管理界面中 -- Virtual domains -- your-domain.com -- DKIM key 中创建key,并将内容在DNS云解析中 txt 设定,对 your-domain.com的记录为DKIM key的内容。

下图为阿里云的DNS云解析的实际情况,可做参考:

下图为生成DKIM key的界面:

设置SSL

SSL这玩意,直接在阿里云上买个免费的单独的SSL证书,能管一年。一年后到时候再想办法买另一个也差不多吧。

直接下载第一个Apache的证书,然后在poste中,在System Setting -- TLS certificate 界面中,将证书的三个部分给导入,然后在docker中重启容器即可。

后记

如果发现接收不到邮件,或者发送附件不成功的情况,很有可能是 DNS上有些没配齐,需要再去检查和测试一下。

测试邮箱的网站工具:https://www.mail-tester.com/ 还不错,只是一天只有三次的测试机会,超了要收费。

九、如何架设网站服务器?

架设网站服务器是一项很重要的工作,有很多种方法可以选择。本文将主要讲述两种常用的架设方法:使用VPS或者使用独立服务器。1:什么是服务器 服务器一般指的是提供网络服务的计算机,它包括主机和服务器软件。主机是指计算机硬件系统,如中央处理器、内存、硬盘驱动器和网卡等。服务器软件是指为提供特定网络服务而开发的软件,如Web服务器、数据库服务器和文件服务器等。在互联网上,服务器是提供网络服务的主机,如Web服务器、FTP服务器、Email服务器、数据库服务器等。服务器通常位于数据中心,并由专业的IT人员管理和维护。网站服务器主要指的是Web服务器,它是提供网络浏览和访问的服务器。网站服务器的主要作用是存储网站的静态和动态网页,当用户通过浏览器访问网站时,网站服务器会将相应的网页发送给用户。2:网站服务器的构成 网站服务器是指专门用来存储网站资料和信息的计算机系统。网站服务器一般包括主机、操作系统、网络设备、数据库软件、Web服务器软件等。网站服务器必须保证24小时不间断运行,并具有较强的负载能力和安全性。3:选择服务器的因素 因特网服务器的选择主要取决于三个因素:硬件性能、操作系统和应用软件。硬件性能主要指处理器、内存、硬盘和网卡等硬件设备的性能。操作系统主要指服务器上运行的操作系统。应用软件主要指网站所使用的软件。4:如何安装网站服务器 1.首先,要安装网站服务器,你需要一台服务器设备。根据你的需要,可以选择物理服务器或者虚拟服务器。2. 物理服务器需要安装操作系统,然后安装网站服务器软件,最后连接到互联网。虚拟服务器则不需要安装操作系统,只需要安装网站服务器软件,然后连接到互联网。3. 然后,你需要注册域名,也就是网站的地址。域名注册需要支付一定的费用,一般按照年限收费。4. 最后,将域名解析到网站服务器上。5. 网站服务器安装完成后,就可以访问网站了。 如果你正在寻找一种可靠的、稳定的网站服务器架设方法,那么就使用VPS或者独立服务器吧。这两种方法都有其优点和缺点,你可以根据自己的需要进行选择。

十、根服务器是啥?

树形结构在计算机系统里很常见,比如磁盘目录结构。又比如dns的结构,整体架构就像一棵树,处在根部位置的服务器即根域服务器。