K:\test23\ejb\src\StatefulHome.java
package ejbs;
public interface StatefulHome extends javax.ejb.EJBHome {
public Stateful create(String str) throws java.rmi.RemoteException, javax.ejb.CreateException;
}
K:\test23\ejb\src\Stateful.java
package ejbs;
public interface Stateful extends javax.ejb.EJBObject {
public void append(String str) throws java.rmi.RemoteException;
public String getStr() throws java.rmi.RemoteException;
}
K:\test23\ejb\src\StatefulBean.java
package ejbs;
public class StatefulBean implements javax.ejb.SessionBean {
public void ejbCreate(String str) throws javax.ejb.EJBException {
this.str = str;
}
public void ejbRemove() throws javax.ejb.EJBException {}
public void ejbPassivate() {}
public void ejbActivate() {}
public void setSessionContext(javax.ejb.SessionContext sctx) {}
private String str;
public String getStr() {
return this.str;
}
public void append(String str) {
this.str += str;
}
}
K:\test23\ejb\META-INF\ejb-jar.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE ejb-jar PUBLIC '-//Sun Microsystems, Inc.//DTD Enterprise JavaBeans 2.0//EN' 'http://java.sun.com/dtd/ejb-jar_2_0.dtd'>
<ejb-jar>
<display-name>aaaaaaaa</display-name>
<enterprise-beans>
<session>
<ejb-name>Stateful</ejb-name>
<home>ejbs.StatefulHome</home>
<remote>ejbs.Stateful</remote>
<ejb-class>ejbs.StatefulBean</ejb-class>
<session-type>Stateful</session-type>
<transaction-type>Bean</transaction-type>
</session>
</enterprise-beans>
</ejb-jar>
K:\test23\web\stateful.jsp
<%@ page contentType="text/html;charset=GBK" %>
<%
String str = request.getParameter("str");
String message = "nothing";
try {
javax.naming.InitialContext ictx = new javax.naming.InitialContext();
Object objRef = ictx.lookup("Stateful");
ejbs.StatefulHome home = (ejbs.StatefulHome) javax.rmi.PortableRemoteObject.narrow(objRef, ejbs.StatefulHome.class);
ejbs.Stateful remote = home.create(str);
remote.append(", welcome to our site!");
message = remote.getStr();
} catch (java.rmi.RemoteException re) {
} catch (javax.ejb.CreateException ce) {
} catch (javax.naming.NamingException ne) {
}
%>
<h1><%=message%></h1>
K:\test23\web\WEB-INF\web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
version="2.4" >
<ejb-ref>
<ejb-ref-name>Stateful</ejb-ref-name>
<ejb-ref-type>Session</ejb-ref-type>
<home>ejbs.StatefulHome</home>
<remote>ejbs.Stateful</remote>
<ejb-link>Stateful</ejb-link>
</ejb-ref>
</web-app>
K:\test23\META-INF\application.xml
<?xml version="1.0" encoding="UTF-8"?>
<application>
<display-name>aaaaaaaaa</display-name>
<module>
<web>
<web-uri>stateful.war</web-uri>
<context-root>/stateful</context-root>
</web>
</module>
<module>
<ejb>
stateful.jar
</ejb>
</module>
</application>
K:\test23\build.bat
set ear_name=stateful
set ejb_name=ejb
set web_name=web
set server_path=K:\jboss\server\default\deploy
cd %ejb_name%
javac -classpath %classpath% -d . .\src\*.java
jar cvf ..\%ear_name%.jar *.*
cd ..
cd %web_name%
jar cvf ..\%ear_name%.war *.*
cd ..
jar cvf %server_path%\%ear_name%.ear META-INF/ %ear_name%.war %ear_name%.jar
结果:
http://localhost:4000/stateful/stateful.jsp?str=bitan
bitan, welcome to our site!
分享到:
相关推荐
实战EJB之三开发会话Bean(有状态会话Bean) ...有状态会话Bean是EJB中的一个重要组件,可以在客户引用期间维护Bean中的所有实例数据的状态值,开发有状态会话Bean需要正确地理解其生命周期和开发过程。
### Bean开发实例之二:有状态会话Bean开发实例 #### 概述 本文档将详细介绍如何使用Java Business Components (JBX) 和 WebLogic Server (WLS) 开发一个有状态会话Bean(Stateful Session Bean)的具体实例。在这...
有状态会话Bean保持了与客户端的会话状态,这意味着它可以记住客户端在一系列交互过程中的状态。每个客户端请求都会被映射到一个特定的SSB实例,允许bean在多个方法调用之间存储和管理数据。在EJB3中,实现SSB通常...
每次调用方法时,容器都会为请求分配一个新的会话Bean实例,因此每个客户端请求都是独立的。这意味着,如果同一个客户端多次调用同一个无状态会话Bean,可能会得到不同的实例,导致之前的会话信息丢失。这种设计模式...
3. 本地调用:在同一个应用内,可以直接注入会话Bean实例进行调用。 六、EJB的优势 1. 面向接口编程:通过接口定义服务,实现松耦合。 2. 内置事务管理:EJB容器自动管理事务,保证数据一致性。 3. 容器管理的生命...
在EJB中,会话Bean分为两种类型:无状态会话Bean(Stateless Session Bean)和有状态会话Bean(Stateful Session Bean)。无状态会话Bean不保留任何客户端特定的信息,每次调用都是独立的。而有状态会话Bean则可以...
EJB主要分为三种类型:无状态会话Bean(Stateless Session Beans)、有状态会话Bean(Stateful Session Beans)以及实体Bean(Entity Beans)。本篇将深入探讨有状态Bean和无状态Bean的概念、区别以及它们的应用场景...
无状态会话 Bean 是 EJB 的一种类型,它为每个请求创建一个新的实例,不保留任何客户端的上下文信息。这使得它们非常适合执行计算密集型任务或事务操作,而不涉及持久化状态。 3. **EJB3 的简化** EJB3 相比于...
无状态会话Bean的主要特点是每次请求都会创建一个新的Bean实例,不保留任何来自先前请求的状态信息,因此它们非常适合用于执行独立、无状态的计算任务。 总结来说,本实验旨在帮助学习者深入理解Java EE中无状态...
- **状态交换机制**:为了优化资源利用,当容器需要释放有状态会话Bean实例用于其他客户端时,会通过钝化机制将状态存储至持久化设备,而当再次需要该实例时,则通过激活过程恢复状态。 #### 三、生命周期管理与...
WebLogic Server通过内存复制技术在集群中实现负载均衡,每个有状态会话Bean实例都在两个服务器的内存中存储,一个为主服务器,另一个为辅助服务器。主服务器失效时,辅助服务器自动接管。然而,这种技术可能导致...
#### 三、有状态会话Bean实例 **1. 业务接口(Cart)** ```java import java.util.List; import javax.ejb.Remote; @Remote public interface Cart { public void initialize(String person) throws ...
**ejb3.0 第2,3讲 - 开发第一个无状态会话bean和客户端** 在Java企业版(Java EE)中,Enterprise JavaBeans(EJB)是用于构建可扩展、安全和事务处理的服务器端应用程序的核心组件。EJB 3.0是一个重要的版本,它极...
- 内存复制技术确保每个有状态会话Bean实例同时存在于两个服务器上,一个作为主服务器,另一个作为辅助服务器。 - 如果主服务器出现故障,辅助服务器可以迅速接替工作,并且系统会自动选择其他可用服务器作为新的...
- **有状态会话Bean**:相反,有状态会话Bean保留了与特定客户端会话的上下文信息,因此每个实例服务于一个单独的客户端。这种类型的Bean适用于需要跟踪用户交互或状态的场景。 4. **testSessionBean** 这可能是...
EJB会话Bean分为无状态会话Bean和有状态会话Bean。无状态会话Bean通常用于处理不依赖于会话状态的业务逻辑,而有状态会话Bean则保留了客户端交互的上下文信息。在Java EE容器中,EJB会话Bean的生命周期由容器管理,...
首先,我们要理解“有状态会话bean”(Stateful Session Bean,SFSB)。与无状态会话bean相反,SFSB能够维护与客户端交互的上下文信息,也就是说,它们可以记住客户端的状态。这使得SFSB非常适合那些需要跟踪用户...
- 提供了创建和维护有状态会话Bean实例的方法。 - **区别**: - 对比分析了无状态会话Bean与有状态会话Bean之间的差异。 - 包括它们各自的优势、适用场景等。 - **JNDI名称定制**: - 说明了如何为会话Bean...