开发SessionBean

EJB(企业级JavaBean)之Session Bean EJB是企业级JavaBean,是一种分布式的具体实现。EJB的企业Bean分为三种,分别是Session Bean(会话Bean)、其中有分为Stateless Session Bean(无状态会话Bean)、Statefule Session Bean(有状态会话Bean);Message Driven Bean(消息驱动Bean)、Persistence(持久化)的Entity Bean(实体Bean)。这篇主要讲解Session Bean 阅读详情

分以下几个步骤:

1 建立测试web模块

2 建立idea ejb模块,编写ejb

3 编译,打包

4 写测试页面

5 发布ejb,web测试模块,测试ejb

 

1 建立web测试模块。

 

在默认的user_projects/domains/mydomain/applications目录下,新建一个名为web的文件夹。这个文件夹就是我们测试ejb的web模块。

 

在web文件夹下新建WEB-INF文件夹,在WEB-INF下新建lib文件夹。

 

在WEB-INF下新建web.xml文件,内容如下:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>

</web-app>

 

ok。web测试模块完成。

 

2 建立idea ejb模块,编写ejb

打开idea,选择 file-new-ejb modules,把module name 改为“EjbSamples”,如下图:

在服务器选项,选择weblogic,其余都按默认设置。最后点finish。

 

在src文件夹下新建包。包名如下:com.diegoyun.ejb.slb,如下图:

把鼠标放到模块名上,右键,选择:new-sessionBean。然后在弹出的属性框设置如下:

<ejb-name> :输入Helloworld

Package:选择/输入com.diegoyun.ejb.slb

其余信息idea会帮你自动设置,整个属性框属性如下:

点击ok结束

 

这时会弹出ejb的属性配置界面,如下:

在Display name,输入 HelloworldEJB

 

然后切换到weblogic server页,输入jndi name如下:ejb/session/HelloworldEJB

 

界面如下:

关闭这个属性页。Idea已经帮你写好了ejb的配置信息。可以打开META-INF/下的ejb-jar.xml和weblogic-ejb-jar.xml进行查看。

 

这时在com.diegoyun.ejb.slb下,应该有三个文件:Helloworld,HelloworldBean和HelloworldHome

 

在Helloworld接口中添加一个方法如下:

public interface Helloworld extends EJBObject {

    public String getGreeting(String name)throws RemoteException;

}

在HelloworldBean接口中添加一个方法如下:

public class HelloworldBean implements SessionBean {

……………

//omit others

    public String getGreeting(String name){

        return "Hello," + name;

    }

}

 

ok.你的Helloword ejb已经写好了。

 

3 编译,打包,发布ejb

 

本例采用web方式访问ejb。并且没有把web模块和ejb jar都打包成ear。所以必须先把ejb源码编译成jar,发布这个jar,然后复制到测试web模块的lib目录下,这样web页面才能访问到bean。

  本例采用ant脚本来执行编译和打包等命令。在idea的ejbSamples模块下新建一个build.xml脚本,内容如下:

<project name="ejb-example" default = "all" basedir=".">

    <!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:/Devs/bea/weblogic81/server/lib/weblogic.jar"/>

    <property name="uploadPath" value="D:/Devs/bea/user_projects/domains/mydomain/myserver/upload"/>

    <property name="webPath" value="D:/Devs/bea/user_projects/domains/mydomain/applications/web/WEB-INF/lib"/>

    <!-- End personal conf info -->

 

    <property name="source" value="src"/>

    <property name="meta" value="META-INF"/>

    <property name="build" value="${basedir}/build"/>

    <property name="packinfo" value="${build}/META-INF"/>

    <property name="dist" value="${basedir}/dist"/> 

 

    <target name="init">

    <!-- Create the time stamp -->

        <tstamp/>

        <mkdir dir="${build}"/>

        <mkdir dir="${dist}"/>

        <mkdir dir="${packinfo}"/>

    </target>

    <target name="ejb">

        <javac srcdir="${source}" classpath="${j2eelib}"

              destdir="${build}" includes="**/*.java"/>

    </target>

    <target name="copy" depends="ejb">

        <copydir src="${meta}" dest="${packinfo}" includes="**/*.xml"/>

    </target>

    <target name="ejb-jar" depends="ejb">

       <jar jarfile="${dist}/EjbSamples.jar" includes="**/*.xml,

              **/*.class" basedir="${build}"/>

    </target>

    <!-- copy jar to weblogic upload ant web diretory -->

    <target name="copy-to-path" depends="ejb-jar">

        <copyfile src="${dist}/EjbSamples.jar" dest="${uploadPath}/EjbSamples.jar" forceoverwrite="true"/>

        <copyfile src="${dist}/EjbSamples.jar" dest="${webPath}/EjbSamples.jar" forceoverwrite="true"/>

    </target>

    <target name="all" depends="init,ejb,copy,ejb-jar,copy-to-path"/>

</project>

 

针对你本机weblogic的安装,修改脚本以下信息即可:

<!-- Set your personal configuration information below: -->

    <property name="j2eelib" value="D:/Devs/bea/weblogic81/server/lib/weblogic.jar"/>

    <property name="uploadPath" value="D:/Devs/bea/user_projects/domains/mydomain/myserver/upload"/>

    <property name="webPath" value="D:/Devs/bea/user_projects/domains/mydomain/applications/web/WEB-INF/lib"/>

    <!-- End personal conf info -->

 

<property name="j2eelib"> :由于本例采用weblogic.jar进行javac编译,所以必须知道该jar的位置。通常,它位于<bea diretory>/weblogic81/server/lib/下。例如,如果你的weblogic安装在C盘,那么你的jar应该如此设置:

<property name="j2eelib" value="C: /bea/weblogic81/server/lib/weblogic.jar"/>

 

<property name=" uploadPath "> :weblogic放置上传文件的目录。通常位于<bea diretory>/user_projects/domains/<your domain>/<your server>/upload文件夹下。如果你采用的是weblogic默认安装,那么<your domain>通常是mydomain(由weblogic默认创建),<your server>通常是myserver。例如,如果你的weblogic安装在C盘,并且domain和server都采用默认,那么属性设置如下:

<property name="uploadPath" value="C:/bea/user_projects/domains/mydomain/myserver/upload"/>

 

<property name="webPath">:web测试模块的lib目录。按照你自己本机配置进行设置。

 

至此,ejb的编写,配置工作全部完成。运行刚才的脚本。

Ant build.xml

然后查看 web测试模块/WEB-INF/lib 下是否有ejb jar,weblogic的upload目录下是否有ejb jar,如果没有,请按所列步骤仔细检查你的配置情况。

 

4 写测试页面进行测试

在web模块下新建hello.jsp,内容如下:

<%@ page language="java" %>

<%@ page import="com.diegoyun.ejb.slb.Helloworld,

                com.diegoyun.ejb.slb.HelloworldHome,

                 javax.ejb.*,

                 java.math.*,

                 javax.naming.*,

                 javax.rmi.PortableRemoteObject,

                 java.rmi.RemoteException" %>

 

<html>

<head>

    <title>hello</title>

</head>

 

<body bgcolor="white">

<h1><b><center>Stateless Bean Examples</center></b></h1>

<hr>

 

<form name="frm" method="post"  action="hello.jsp">

    <input type="text" value="Diego" name="myname"/>

    <input type="submit" value="Submit"/>

</form>

<p>

<p>See :</p>

<br>

<%

    Helloworld hello = null;

    String name = null;

    name = request.getParameter("myname");

    if(name!=null && !"".equals(name)){

       try {

        InitialContext ic = new InitialContext();

        Object objRef = ic.lookup("ejb/session/HelloworldEJB");

        HelloworldHome home = (HelloworldHome)PortableRemoteObject.narrow(objRef, HelloworldHome.class);

        hello = home.create();

       } catch (RemoteException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (CreateException ex) {

           System.out.println("Couldn't create hello bean."+ ex.getMessage());

       } catch (NamingException ex) {

           System.out.println("Unable to lookup home: "+ "HelloworldHome "+ ex.getMessage());

       }

    }

    if(hello!=null && !"".equals(hello)) {

        String s = hello.getGreeting(name);

        out.print(s);

    }

%>

 

</body>

</html>

 

5 发布ejb,web测试模块,调试ejb

发布ejb。启动weblogic server,打开控制台。

然后在ejb发布页面,选择upload文件夹下的jar进行发布,默认路径应是:<bea diretory>/user_projects/domains/mydomain/myserver/upload

发布web模块

在deploy web application modules下,定位到<bea diretory>/user_projects/domains/mydomain/applications下,可以看到我们建立的web模块。点“Target Module”进行发布,name取名为“web”

ok。所有工作均已完成!

打开浏览器,输入:http://localhost:7001/web/hello.jsp

点submit,就可以看到hello字样。

FAQ:

 

1 为什么在打包ejb之后,把ejb copy到weblogic的upload目录下?(这个过程是由build.xml脚本完成的)

 

答:一般情况下如果你修改了ejb,那么你就要在weblogic控制台重新deploy ejb的jar。经常进行这项工作是很烦人的。幸好weblogic提供了upload的特性,你把jar 上传到weblogic,然后deploy upload文件夹里的这个jar。以后每次在你修改ejb,打包成jar之后,你用新的jar覆盖upload目录下的jar,就不用重新deploy jar了。通过这种方式模拟了jboss的热部署特性。

  其他模块,例如war,ear,都可以通过这种方式来deploy。

EJB的开发及应用,Session Bean的开发 简要介绍JNDI,EJB及其开发应用技术,附有Session Bean的开发实例 立即下载

相关推荐

Transformer在量化交易中的应用:从时序预测到策略生成

Transformer模型凭借其强大的自注意力机制,在自然语言处理领域取得了革命性突破。其核心原理是通过并行计算和动态权重分配,有效捕捉序列数据中的长距离依赖关系。这一特性使其在金融时间序列分析中展现出巨大技术价值,能够处理市场数据中的复杂非线性模式和长期关联。在量化交易场景下,Transformer可将价格、成交量等连续数据通过离散化分桶处理,转化为类似文本的序列,进而进行预测或直接生成交易信号。本文以QuantGPT项目为例,探讨了如何将这一前沿AI架构迁移应用于金融领域,涵盖了从数据作为“语言”的编码

weixin_26757949的博客 366

EJB系列(二)——Session Bean 的开发和调用

EJB 会话Session

Think In JAVA—Max 1202

Mplus—随机截距交叉滞后模型(RI-CLPM)语法

随机截距交叉滞后模型RI-CLPM的Mplus语法。

m0_54401011的博客 2531

会话 Bean(Session Bean)

Session Bean 是实现业务逻辑的地方。简单地说,像我们要实现两数相加或是从数据库中读取数据,都是通过Session Bean 来实现。根据是否可以维护会话状态,Session Bean 分为有状态 bean 和无状态 bean。有状态 bean 可以维护会话状态,无状态 bean 不维护会话状态。要维护会话状态,意味着 EJB 容器要为每个用户创建一个 bean实例,并通过该实例保存着与...

iteye_8614的博客 423

【rotors】多旋翼无人机仿真(五)——多无人机仿真

如何创建多个无人机仿真

caiqidong321的博客 2393

搭建PX4开发系统(Ubuntu 22.04)

本文是《从零开始学 PX4 无人机开发》系列第二篇,适合开发者在 Ubuntu 系统下快速搭建 PX4 编译与仿真环境,支持 QGroundControl、Gazebo、MAVSDK 等完整工具链。

qq_15856721的博客 4201

有状态会话Bean和无状态会话Bean的区别

    Session   Bean   主要的目的是让程序开发者将逻辑层抽离;    Entity   Bean   主要是资料组件,  Entity   Bean   主要的目的,在于提供资料,也就是说程序设计师可以将   Entity   Bean   当程序资料;     Message   Driven   Bean   与   Session   Bean   或是   Entity 

lingxiao301415的专栏 1万+

Linux7 挂载 nfs 远程目录

每天一个 DBA 小知识,助你更进一步!

LuciferLiu_DBA 1万+

在JBOSS中开发SESSIONBEAN和MSGBEAN

在JBOSS中开发SESSIONBEAN和MSGBEAN 做法:在JBOSS中,JMS连接工厂的JNDI名:private static final java.lang.String DESTINATION_JNDI_NAME="queue/testQueue";private static final java.lang.String CONNECTION_FACTORY_JNDI_NAME="

mudboy的专栏 1386

【OpenClaw从入门到精通】第15篇:国产芯片适配实战——昇腾/龙芯/天数智芯全流程跑通(2026实测版)

2026年国产芯片AI适配迎来爆发期,OpenClaw作为轻量化本地AI智能体,已实现华为昇腾、龙芯、天数智芯等主流国产平台的全流程适配。本文基于实测数据,从背景解析、核心原理、算法优化、实操部署四个维度,详细讲解OpenClaw在香橙派昇腾开发板、龙芯3B6000M、天数彤央TY1200及联想开天X7h的部署流程,同时提供统一工具玄武CLI的使用指南。文中包含完整代码、执行结果、避坑技巧及虚拟实战案例,兼顾新手入门与进阶提升,帮助读者快速掌握国产芯片上的本地AI部署能力,实现数据隐私保护与低成本AI落地。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1007

Qt实现窗口等比例缩放

在Qt中,实现窗口的等比例缩放是一个常见的需求。通过对窗口的尺寸进行调整,使得窗口的内容在缩放过程中保持相同的比例,可以提供更好的用户体验。通过以上的代码,我们实现了一个可以等比例缩放的Qt窗口。在调整窗口大小时,窗口中的标签和按钮将按比例缩放,保持内容的比例不变。首先,我们需要在Qt中创建一个窗口,并设置其内容。在该事件中,我们将根据窗口的新尺寸计算出合适的比例因子,并将其应用到窗口的内容上。现在,我们将添加功能,使得窗口可以等比例缩放。最后,我们将缩放因子应用到窗口中的标签和按钮上,调整它们的尺寸。

2301_79330511的博客 3958

Jboss3.0-Tomat4.03下Ejb的开发之一(SessionBean的开发)

   从今天开始,给大家说说Jboss3.0下的EJB的开发,首先给大家说的是一个很简单的SessionBean的开法,在此基础上我会慢慢的说在SessionBean如何连接数据库,如何发电子邮件,如何进行事务处理等等。一、首先你的保证你的系统能正常的运行起动,对EJB有一定的了解。二、现在所说的EJB都是标准的EJB没有用到Jboss所特有的特性等等。1、在E:\我建立了

etre的专栏 1131

继电器管理策略(二)

介绍了电池管理系统中的继电器管理,包含控制和诊断

manjixingkong1234的专栏 419

eclipse + JBoss 5 + EJB3开发指南(2):编写有状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 上一篇:eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean 编写有状态的(Stateful)的Session Bean也非常简单,只需要将无状态注释(@Stateless)改成有状态注释(@Stateful)即可。如果使用Stateful Sessionbean,客户端在使用同一个Sessi...

keke1314520的博客 82

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C语言实现迷你解释器:从词法分析到AST求值的完整指南

解释器作为编程语言的核心组件,负责将源代码转换为可执行指令。其工作原理基于编译原理的经典三阶段模型:词法分析将字符流分解为有意义的标记(Token),语法分析根据预定义规则构建抽象语法树(AST),最终通过遍历AST实现求值执行。这种技术不仅支撑了Python、JavaScript等高级语言的运行环境,更是理解语言设计、实现领域特定语言(DSL)的基础。通过词法分析器和递归下降解析器的实践,开发者能掌握从字符串处理到语法树构建的完整链路,为构建自定义脚本引擎或配置语言奠定基础。本文以C语言实现迷你解释器为例

keke1314520的博客 337

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

解决带地理坐标PDF在CAD中坐标丢失问题:从原理到毫米级配准实战

地理信息系统(GIS)与计算机辅助设计(CAD)是空间数据处理的两大核心技术领域。GIS侧重于地理坐标与空间分析,而CAD则专注于精确的几何图形绘制与工程设计。两者协同工作的核心挑战在于数据格式与坐标系统的兼容性,尤其是当包含高精度地理参考信息的PDF文件需要在CAD环境中进行精确应用时。地理配准技术正是解决这一数据鸿沟的关键,它通过建立图像坐标与真实世界坐标之间的数学转换关系,确保空间数据在不同平台间流转时保持位置与尺度的绝对准确。这一技术对于城市规划、测绘工程和基础设施设计等场景具有极高的工程价值,能直

keke1314520的博客 316

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MyEclipse开发EJB--SessionBean全过程

说起EJB开发工具中的豪杰,估计大家都会一致认为非JBuilder莫属,事实上我也这么认为。但是最近发现MyEclipse也不错。虽然没有像JB那样强大的“EJB Desiner视图”支持,但是借助XDoclet的多才多艺与灵活高效,也使得MyEclipse在JB面前毫不逊色。想必阅读这个文章的朋友都已经具备丰富的开发经验,有自己动手、发现、解决问题的能力,所以Eclipse和MyEclips

phoebus的专栏 5853

eclipse + JBoss 5 + EJB3开发指南(1):编写无状态的SessionBean

本文为原创,如需转载,请注明作者和出处,谢谢! 本系列教程使用的软件版本如下: Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/ JDK:1.6.0.14,http://java.sun.com/javase/downloads/in...

haierboos 88

Jboss3.0-Tomat4.03下Ejb的开发之一(SessionBean的开发) (转)

Jboss3.0-Tomat4.03下Ejb的开发之一(SessionBean的开发) (转)[@more@] XML:namespace prefix = o ns = "urn:schemas-microsoft-c...

csd3176的博客 183

eclipse + JBoss 5 + EJB3开发指南(1):编写第一个无状态的SessionBean

本系列教程使用的软件版本如下:Eclipse:3.4.2, Eclipse IDE for Java EE Developers JBoss :5.0.1,http://www.jboss.org/jbossas/downloads/JDK:1.6.0.14,http://java.sun.com/javase/downloads/index.jsp    在本文中将编写一个简单的无状态Sessi...

weixin_34334744的博客 65
上一篇: java.util
下一篇: 开发CMP
云哥
博客等级 码龄22年 2粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值