EJB3已经出来了一段时间,这两天对它的功能进行了测试.发现与以前版本比较已经有了很大的改变..
测试环境:JBoss4.0.5.GA,Eclipse3.2.1.由于只是测试并没有与数据库进行连接..
1、定义需要在客户端进行调用的接口
java 代码
- package com.service.ejb3;
-
-
-
-
-
-
-
- public interface HelloWorld {
- public String SayHello(String name);
- }
定义了一个SayHello的方法.参数为一个String
2、服务器端需要实现这个接口:
java 代码
- package com.service.ejb3.impl;
-
- import java.util.Date;
-
- import javax.ejb.Remote;
- import javax.ejb.Stateless;
-
- import org.apache.commons.lang.time.StopWatch;
- import org.apache.commons.logging.Log;
- import org.apache.commons.logging.LogFactory;
-
- import com.service.ejb3.HelloWorld;
- import com.service.pub.DateUtil;
-
-
-
-
-
-
-
-
- @Stateless
- @Remote ({HelloWorld.class})
- public class HelloWorldBean implements HelloWorld {
-
- private static Log log = LogFactory.getLog(HelloWorldBean.class);
-
- public String SayHello(String name) {
- StopWatch sw = new StopWatch();
- sw.start();
- log.debug("Begin execute in service:" + name + " Time:" + DateUtil.CN_DATETIME.format(new Date()));
-
- String str = name + ": Hello,World." ;
- sw.stop();
- str += DateUtil.CN_DATETIME.format(new Date());
-
- log.debug("Over execute in service:" + str + " Time:" + DateUtil.CN_DATETIME.format(new Date()));
- return str;
- }
- }
实现很简单,根据客户端传入的String,加上Hello,World和当前服务器时间后返回.
3、实现客户端调用.采用applet.优点:比较容易实现一些在Web下不好实现的界面功能.缺点:需要在客户端安装jre并有一定量的代码下载量.
java 代码
- package com.client.ejb3;
-
- import java.awt.BorderLayout;
- import java.awt.Dimension;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.util.Properties;
-
- import javax.naming.InitialContext;
- import javax.swing.JApplet;
- import javax.swing.JButton;
- import javax.swing.JOptionPane;
-
- import com.service.ejb3.HelloWorld;
-
-
-
-
-
-
-
-
- public class MyApplet extends JApplet {
-
- private HelloWorld hw = null;
-
- private void initSelf() {
-
- Properties props = new Properties();
-
- props.setProperty("java.naming.factory.initial", "org.jnp.interfaces.NamingContextFactory");
- props.setProperty("java.naming.provider.url", "localhost:1099");
- props.setProperty("java.naming.factory.url.pkgs", "org.jboss.naming:org.jnp.interfaces");
-
- InitialContext ctx = null;
- try {
- if (props == null) {
- props = System.getProperties();
- }
- ctx = new InitialContext(props);
- if (ctx == null) {
- System.out.println("InitialContext is null");
- }
- hw = (HelloWorld) ctx.lookup("HelloWorldBean/remote");
- if (hw == null) {
- System.out.println("HelloWorld is null.");
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- JButton button = new JButton();
- button.setText("Test Button");
- button.addActionListener(new ActionListener() {
-
- public void actionPerformed(ActionEvent e) {
- onClick();
- }
-
- });
-
- getContentPane().setLayout(new BorderLayout());
- getContentPane().add(button, BorderLayout.NORTH);
- }
-
- private void onClick() {
- JOptionPane.showMessageDialog(this, hw.SayHello("xzgf"));
- }
-
- @Override
- public void init() {
-
- this.setSize(new Dimension(800, 900));
- super.init();
- initSelf();
- }
- }
4、用JSP实现applet的加载:
java 代码
- <jsp:plugin code="com.client.ejb3.MyApplet" archive="client.jar" codebase="./applet" type="applet">
- </jsp:plugin>
5、部署时需要注意的是:由于在jsp中指定了codebase和archive,所以客户端会在此目录下的client.jar进行类查找.所以需要把JBoss中自带的jbossall-client.jar、jboss-aop-jdk50-client.jar、jboss-aspect-jdk50-client.jar、jboss-ejb3-client.jar解压后和applet主类即MyApplet一起打成一个client.jar.否则会报类找不到异常.下一步会解决这个问题...
6、部署后访问上面的jsp页面即可
分享到:
相关推荐
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
根据提供的文件信息,我们可以分析出该文件主要是一个 Java Applet 的示例代码,但与标题中的 "java EJB 加密与解密原理的一个例子" 并不相符。这里我们将重点解释 EJB(Enterprise JavaBeans)的基本概念以及如何在...
1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
实例3 数组数据操作 实例30 三围立方框 实例31 三围立方体 实例32 标准输入输出 实例33 读写文件(字节) 实例34 读写文件(字符操作) 实例35 获取文件信息 实例36 目录操作 实例37 读取随机文件 实例38 操作EXECL...
HTML、Applet和EJB分别对应表示层、客户端组件和服务端组件。答案是A。 12. **Servlet生命周期** 容器只在Servlet初始化时调用一次`init()`方法。答案是C。 13. **异常处理** 选项C正确,异常匹配通常是基于...
1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()...
包含Java小程序(applet) 185 扩展JSP语言 187 第12章 JSP页面中的JavaBean组件 189 JavaBean组件设计约定 189 为什么要使用JavaBean组件 190 创建并使用JavaBean组件 190 设置JavaBean组件属性 190 返回JavaBean组件...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()方法,保证Bean正常被激活和钝化,EJB对象是用...
1个目标文件 EJB 模拟银行ATM流程及操作源代码 6个目标文件,EJB来模拟银行ATM机的流程及操作:获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,并将当前的计数器初始化,调用每一个EJB对象的count()...
实例85 通过JSP调用Applet程序 285 实例86 JSP与XML的结合 288 第8章 Java安全控制编程 291 实例87 控制访问权限 292 实例88 产生密钥 296 实例89 单钥加解密 299 实例90 双钥加解密 301 实例91 数字签名 303 实例92...
2. **项目管理**:支持多种类型的Java项目,包括应用程序、Applet、EJB、Web服务等,方便组织和管理源代码。 3. **构建工具**:自动编译和打包Java项目,支持Ant脚本,使得构建过程更高效。 4. **调试器**:强大的...
3. 题目3涉及超类和子类的调用。选项D正确,因为实例方法可以调用超类的静态(类)方法,但不能直接调用超类的实例方法或其他类的实例方法。 4. 题目4探讨了多态性。`Super`类和`Sub`类都有`getLenght()`方法,但...
- **浏览器与Applet**:同年,Sun Microsystems开始研发名为WebRunner的浏览器,该浏览器能够执行嵌入网页中的Java Applet,进一步推动了Java在Web开发领域的应用。 #### J2EE 指南的诞生 - **初始版本**:1995年,...
主要包括Web容器、EJB容器和Applet容器等。 - **打包J2EE组件**:讲解了如何将不同的J2EE组件(如Web应用程序、EJB等)打包成可部署的单元。例如,Web应用程序通常被打包成WAR文件,而EJB则被打包成EAR文件。 - **...
主要有四种类型的容器:应用服务器容器、Web容器、Applet容器和EJB容器。 - **打包J2EE组件**:J2EE应用程序通常被打包成WAR或EAR文件。WAR文件用于Web应用程序,而EAR文件则包含整个企业应用程序,可能包括Web应用...
3. **简单的例子**:文件名可能包含Java编程的基础示例,例如变量声明、控制流、函数调用等,这些是初学者入门的关键。 4. **EJB(Enterprise JavaBeans)编程模型**:EJB是Java EE平台的一部分,用于构建企业级...