`
lbfhappy
  • 浏览: 82710 次
社区版块
存档分类
最新评论

EJB初学日记(2)

阅读更多
其实在学习EJB之前,就听说过EJB,有人说他很复杂,也有人说一般般而已,但是几乎所有的人都说EJB3.0确实是简单了许多.
一般讲起JAVA EE,一般人都认为是应用在网页里面的,甚至有人把JAVA EE和JSP等同起来,要知道,JAVA EE是一个很庞大的结构,而JSP只是里面一部份中的一部份而已.

今天我就把JAVA EE的EJB应用到JAVA SE中看一看,在JBOSS里面布署好EJB,然后在swing里面调用EJB,并且观察一些特性.

首先我们先定义一个EJB的接口,接口里面放上我们需要远程调用的方法
在定义接口的时候,可以给它加上@Remote或者@Local注释,表示是远程还是本地,也可以什么都不加,就是一个很普通的接口,然后在实现的时候加上相应的注释,我们就采取第二种,也就是接口的定义里面什么注释都没有


package test1;
/**
 * This is the business interface for Hello enterprise bean.
 
*/
public interface HelloLocal {
    
public String helloFromLocal(String s);
}


package test1;

import javax.ejb.Remote;


/**
 * This is the business interface for Hello enterprise bean.
 
*/
public interface HelloRemote {
    
public String helloFromRemote(String s);
}

以上是两个接口, 一开始是拟做本地调用和远程调用的两个接口,后来我想,能不能让一个接口既是本地接口也是远程接口呢,在JBOSS是可以的.实现如下
/*
 * HelloBean.java
 *
 * Created on 2007年9月6日, 下午6:02
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/

package test1;

import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless;
import javax.swing.JOptionPane;

/**
 *
 * 
@author hadeslee
 
*/
@Stateless
@Remote({HelloLocal.
class,HelloRemote.class})
@Local({HelloLocal.
class,HelloRemote.class})
public class HelloBean implements test1.HelloRemote, test1.HelloLocal {
    
private int i=0;
    
/** Creates a new instance of HelloBean */
    
public HelloBean() {
    }

    
public String helloFromRemote(String s) {
        i
++;
        System.out.println(
""+i+"次调用");
        System.out.println(
"来自远程的问侯:"+s);
        
return "远程返回:"+s+":"+i;
    }

    
public String helloFromLocal(String s) {
        i
++;
        System.out.println(
""+i+"次调用");
        JOptionPane.showMessageDialog(
null,"来自本地的问侯:"+s); 
        System.out.println(
"来自本地的问侯:"+s);
        
return "本地返回:"+s+":"+i;
    }
    
}

在实现的类里面@Remote@Local表示它们要实现的接口,我把两个都放进去了,在NetBeans里面,会有错误的提示,提示内容如下:
Bean使用以下类做为本地和远程业务接口:test1.HelloLocal
但是我编译以后一样是可以布署的,不知道别的EJB容器是否可以这样做.jboss确实是可以的

好了,现在我们都定义好了,马上把它们布署到JBOSS里面去吧.

布署完了之后,就开始开发我们的应用程序了,因为这个调用只涉及到一个方法,我们就不用去定义一个界面了.
我们简单的程序如下.
/*
 * TestHello.java
 *
 * Created on 2007年9月6日, 下午6:06
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 
*/

package testejb;

import java.util.Properties;
import javax.naming.InitialContext;
import test1.HelloLocal;
import test1.HelloRemote;

/**
 *
 * 
@author hadeslee
 
*/
public class TestHello {
    
    
/** Creates a new instance of TestHello */
    
public TestHello() {
    }
    
public static void main(String[] args) throws Exception{
        
        Properties props 
= new Properties();
        
//这些是JBOSS的初始化一些参数
        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");
        InitialContext ctx;
        ctx 
= new InitialContext(props);
        
//找到远程接口,这时其实也可以转成HelloLocal
        HelloRemote hello = (HelloRemote) ctx.lookup("HelloBean/remote");
        System.out.println(hello.helloFromRemote(
"千里冰封"));
        
//可以直接转型过来
        HelloLocal local=(HelloLocal)hello;
        System.out.println(local.helloFromLocal(
"hadeslee"));
        
    }
}

这个时候,我们就可以看到,会有一个 JOptionPane弹出来,点了确定之后,客户端这边才会有输出,JOpitonPane出来之后不一定在最前端显示,所以可能需要找一下,就是因为这个问题搞得我糊涂了一下,我找了半天找不到,后来一个一个窗口的最小化,终于发现了JOptionPane在那里.

为了能运行客户端,你需要把如下的JAR包放到运行客户端的classpath里面,如果是用NetBeans开发的话,加入一个库可以了,库里面包含的JAR文件如下:
[jboss安装目录]\client\commons-logging.jar
[jboss安装目录]\client\ concurrent.jar
[jboss安装目录]\client\ ejb3-persistence.jar
[jboss安装目录]\client\ hibernate-annotations.jar
[jboss安装目录]\client\ hibernate-client.jar
[jboss安装目录]\client\ javassist.jar
[jboss安装目录]\client\ jboss-annotations-ejb3.jar
[jboss安装目录]\client\ jboss-aop-jdk50-client.jar
[jboss安装目录]\client\ jboss-aspect-jdk50-client.jar
[jboss安装目录]\client\jboss-common-client.jar
[jboss安装目录]\client\ jboss-ejb3-client.jar
[jboss安装目录]\client\ jboss-ejb3x.jar
[jboss安装目录]\client\jboss-j2ee.jar
[jboss安装目录]\client\jboss-remoting.jar
[jboss安装目录]\client\jbosssx-client.jar
[jboss安装目录]\client\jboss-transaction-clie
[jboss安装目录]\client\jnp-client.jar
[jboss安装目录]\client\trove.jar
[jboss安装目录]\client\jbossws-client.jar
[jboss安装目录]\client\jboss-jaxws.jar
[jboss安装目录]\client\xmlsec.jar

这样的话,就可以把EJB布署在EJB容器里面,而我们可以在任何地方调用它了.只要你在想调用的地方,带上上面的JAR包就可以了.
分享到:
评论

相关推荐

    EJB初学者PPT及JBOSS包下载

    **企业级JavaBeans(EJB)初学者指南** 企业级JavaBeans(EJB)是Java平台上用于构建可扩展、安全且事务处理能力强的企业级应用程序的核心技术。EJB规范定义了一组组件模型,允许开发人员创建分布式、多层的服务器...

    EJB初学教程分章节示例代码

    本教程针对EJB初学者,旨在通过分章节的示例代码帮助大家逐步掌握EJB的核心概念和技术。 1. **EJB概述** EJB是一种服务器端组件模型,它提供了事务管理、安全性、状态管理和并发控制等服务,以简化企业级应用程序...

    EJB初学者常有的十一个疑惑

    ### EJB初学者常有的十一个疑惑解析 #### 一、EJB与Java Bean的区别 在探讨EJB与Java Bean的区别之前,我们首先需要明确两者的基本概念。 **Java Bean**: - **定义**:Java Bean是一种可重用的组件,没有严格的...

    ejb初学者的教程太太突然问题 特瑞

    2. **EJB生命周期**: - **创建(Creation)**:当容器接收到对bean的请求时,会实例化bean。 - **初始化(Initialization)**:bean实例化后,可能会执行初始化方法。 - **激活(Activation)**:对于有状态会话...

    JMS的使用范例,EJB初学者必看

    本源代码主要向EJB初学者介绍JMS的使用,如何创建和初始化一个请求Requestor对象、如何初始化请求Requestor对象、如何建立一个会话和发送请求、如何打印出请求的过程信息、如何接受由反馈者replier发回的消息等。

    ejb3.0初学者必看

    ### EJB 3.0 初学者必备知识点详解 #### 一、EJB 3.0 概述 **EJB (Enterprise JavaBeans)** 是Java平台为企业级应用程序提供的一种组件模型,它允许开发者以模块化的方式构建分布式网络计算的应用程序。EJB 3.0...

    实战角度比较EJB2和EJB3的架构异同

    【实战角度比较EJB2和EJB3的架构异同】 EJB,即Enterprise JavaBeans,是Java EE(企业版Java)平台的核心组件之一,用于构建可复用、分布式的服务器端应用程序。EJB2和EJB3是EJB技术的两个主要版本,它们在架构上...

    实战EJB 实战EJB 实战EJB

    2. **容器**:管理和执行EJB组件,提供诸如事务管理、安全性、持久化和生命周期管理等服务。 3. **EJB组件**:封装业务逻辑,可以是会话Bean或实体Bean。 **EJB开发人员的角色分配** 1. **Business Logic ...

    EJB+struts2整合示例

    这个示例对于初学者来说,是一个很好的学习资源,因为它展示了如何在实际项目中将EJB和Struts2结合起来,同时也涉及到了Java EE的基础知识,如服务器部署、MVC架构、EJB的使用以及Struts2的配置。通过研究这个示例,...

    Mastering EJB 2nd edition

    总的来说,《Mastering EJB 2nd edition》不仅是一本预览EJB技术的PDF读物,还是一本深入学习和掌握EJB的实用指南,无论你是初学者还是有经验的开发者,都能从中受益匪浅。通过阅读此书,你可以系统地了解EJB,并...

    EJB3最新学习教程,适合初学者

    ### EJB3 最新学习教程知识点详解 #### 一、EJB3 概念与特点 **企业级JavaBean(EJB)**是Java...通过以上内容的学习,初学者可以系统地了解EJB3的核心概念、开发流程及高级特性,为进一步深入学习打下坚实的基础。

    精通EJB第三版

    第1篇对EJB编程基础进行介绍,它概要性地对EJB进行了阐述,无论是EJB初学者,还是资深EJB专家,这部分内容都值得阅读;第2篇重点关注EJB编程的具体内容和过程,其中,研究了如何开发如下三种EJB组件:会话Bean、实体Bean和...

    EJB 2.0企业级应用程序开发 PDF 下载

    本书内容翔实、深入浅出,提供了详细的讨论和实例,对于懂Java语言的EJB初学者是一本有益的指导书。本书所附光盘包括:WebLogic Server 6.1的试用版、WebGain's VisualCafe 4.5的试用版、 WebGain's TopLink 3.5.1的...

    j2ee without ejb 中文 part2

    j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee without ejb 中文 part2j2ee ...

    EJB2.rar_ejb 2.0 demo_ejb2_ejb2 demo

    - **EJB2**:这是一个目录,里面可能包含EJB 2.0的项目结构,包括Bean的源代码、部署描述符(deployment descriptor,如ejb-jar.xml)、以及可能的测试用例。EJB Bean的源代码通常遵循特定的接口,如Remote接口...

    ejb2.rar_bmp ejb2_ejb2_ejb2 cmp b

    在 ejb2.rar_bmp ejb2_ejb2_ejb2 cmp b 这个压缩包中,我们看到的是针对EJB 2.1规范的一个登录实例,它涉及到了两种主要的实体Bean管理策略:CMP(Container-Managed Persistence,容器管理持久化)和 BMP(Bean-...

    EJB方面 ejb pdf

    ### EJB技术详解 #### EJB 2.0与EJB 1.1的主要区别及其应用场景 EJB(Enterprise JavaBeans)技术自1998年首次推出以来,经历了多个版本的演进,其中EJB 2.0是EJB 1.1的重要升级版,带来了诸多改进和新特性,旨在...

    EJB白皮书EJB白皮书

    2. **无容器依赖**:EJB 3.0允许在非EJB容器中运行某些类型的Bean,例如在Web应用中直接使用无状态会话Bean。 3. **依赖注入**:EJB 3.0引入了依赖注入(DI),通过@EJB、@Resource、@Inject等注解,可以方便地注入...

    ejb2的资料,作者雨夜。

    EJB2是EJB规范的第二个主要版本,相较于EJB1,它提供了更多的功能和改进,使得企业级开发更加方便。 在EJB2中,主要存在三种类型的Bean: 1. **Session Bean**:处理复杂的业务逻辑,它们是无状态或有状态的。无...

Global site tag (gtag.js) - Google Analytics