`
JAVA天地
  • 浏览: 673841 次
  • 性别: Icon_minigender_1
  • 来自: 太原
文章分类
社区版块
存档分类
最新评论

jbuilder2006+jboss+db2开发EJB

阅读更多

做web程序这么久,一直把精力放在了前台的展现层,后台都没有怎么去做,除了前一段改进了一个系统的底层架构设计,优化了hibernate和log4j,更改了一些可能会导致内存泄露的地方。ejb更是一直没有用过ejb,最近看了ejb3.0介绍,感觉还不错,准备开始新一轮的修炼。

首先到网上下载了最新的jboss4.0.4,配置jbuilder2006的server,全部默认就可以了,具体就不说了。

先要创建一个EJBModule,然后用向导建一个session bean,名称为:HelloBean。

可以看到生成了3个文件:Hello.java,HelloBean.java,HelloHome.java

修改Hello接口为:

package net.fangw;

import javax.ejb.EJBObject;
import java.rmi.RemoteException;
import javax.ejb.CreateException;

public interface Hello extends EJBObject {
String hello(String name) throws RemoteException,CreateException;
}

修改HelloBean类为:

package net.fangw;

import javax.ejb.SessionBean;
import javax.ejb.SessionContext;
import javax.ejb.CreateException;

public class HelloBean implements SessionBean {
SessionContext sessionContext;
public void ejbCreate() throws CreateException {
}

public void ejbRemove() {
}

public void ejbActivate() {
}

public void ejbPassivate() {
}

public void setSessionContext(SessionContext sessionContext) {
this.sessionContext = sessionContext;
}

//业务方法
public String hello(String name) {
System.out.println("hello," + name + "!");
return "hello," + name + "!";
}

}

保存,编译,然后在EJBModule上点右键,把它deploy。

在工程里新建一个jboss的server,并运行,一般是不会有什么问题的,这样就发布了。

测试EJB:

创建EJB测试类HelloBeanTestClient1.java:

package net.fangw;

import javax.naming.*;
import javax.rmi.PortableRemoteObject;
import java.lang.String;
import javax.naming.InitialContext;
import java.util.Hashtable;
import javax.ejb.*;
import java.rmi.*;

/**
* <p>Title: ejb test</p>
*
* <p>Description: </p>
*
* <p>Copyright: Copyright (c) 2006</p>
*
* <p>Company: fangw</p>
*
* @author fangw
* @version 1.0
*/


public class HelloBeanTestClient1 {
private static final String ERROR_NULL_REMOTE = "Remote interface reference is null. It must be created by calling one of the Home interface methods first.";
private static final int MAX_OUTPUT_LINE_LENGTH = 100;
private boolean logging = true;
private Hello hello = null;
private HelloHome helloHome = null;

//Construct the EJB test client
public HelloBeanTestClient1() {
initialize();
}

public void initialize() {
long startTime = 0;
if (logging) {
log("Initializing bean access.");
startTime = System.currentTimeMillis();
}

try {

//get naming context
Context context = getInitialContext();
//look up jndi name
Object ref = context.lookup("HelloBean");
//look up jndi name and cast to Home interface
helloHome = (HelloHome) PortableRemoteObject.narrow(ref, HelloHome.class);
if (logging) {
log(
"Succeeded initializing bean access through Home interface.");
long endTime = System.currentTimeMillis();
log("Execution time: " + (endTime - startTime) + " ms.");
}

} catch (Exception e) {
if (logging) {
log("Failed initializing bean access.");
}
e.printStackTrace();
}

}

private Context getInitialContext() throws NamingException {
Hashtable environment = new Hashtable();

environment.put(Context.INITIAL_CONTEXT_FACTORY,
"org.jnp.interfaces.NamingContextFactory");
environment.put(Context.URL_PKG_PREFIXES,
"org.jboss.naming:org.jnp.interfaces");
environment.put(Context.PROVIDER_URL, "jnp://localhost:1099");

return new InitialContext(environment);
}

//----------------------------------------------------------------------------
// Methods that use Home interface methods to generate a Remote interface reference
//----------------------------------------------------------------------------

public Hello create() {
long startTime = 0;
if (logging) {
log("Calling create()");
startTime = System.currentTimeMillis();
}

try {
hello = helloHome.create();
if (logging) {
log("Succeeded: create()");
long endTime = System.currentTimeMillis();
log("Execution time: " + (endTime - startTime) + " ms.");
}
} catch (Exception e) {
if (logging) {
log("Failed : create()");
}
e.printStackTrace();
}
if (logging) {
log("Return value from create(): " + hello + ".");
}
return hello;
}

//----------------------------------------------------------------------------
// Methods that use Remote interface methods to access data through the bean
//----------------------------------------------------------------------------

public String hello(String name) {
String returnValue = "";
if (hello == null) {
System.out.println("Error in hello(): " + ERROR_NULL_REMOTE);
return returnValue;
}
long startTime = 0;
if (logging) {
log("Calling hello(" + name + ")");
startTime = System.currentTimeMillis();
}

try {
returnValue = hello.hello(name);
if (logging) {
log("Succeeded: hello(" + name + ")");
long endTime = System.currentTimeMillis();
log("Execution time: " + (endTime - startTime) + " ms.");
}
} catch (Exception e) {
if (logging) {
log("Failed : hello(" + name + ")");
}
e.printStackTrace();
}
if (logging) {
log("Return value from hello(" + name + "): " + returnValue + ".");
}
return returnValue;
}

public void executeRemoteCallsWithDefaultArguments() {
if (hello == null) {
System.out.println(
"Error in executeRemoteCallsWithDefaultArguments(): " +
ERROR_NULL_REMOTE);
return;
}

try {
hello("");
} catch (Exception e) {
e.printStackTrace();
}
}

//----------------------------------------------------------------------------
// Utility Methods
//----------------------------------------------------------------------------

private void log(String message) {

if (message == null) {
System.out.println("-- null");
}
if (message.length() > MAX_OUTPUT_LINE_LENGTH) {
System.out.println("-- " +
message.substring(0, MAX_OUTPUT_LINE_LENGTH) +
" ...");
} else {
System.out.println("-- " + message);
}
}

//Main method
public static void main(String[] args) {
HelloBeanTestClient1 client = new HelloBeanTestClient1();
try {
client.create();
client.hello("fangw");
client.hello.remove();
} catch (RemoveException ex) {
ex.printStackTrace();
} catch (RemoteException ex) {
ex.printStackTrace();
}
// Use the client object to call one of the Home interface wrappers
// above, to create a Remote interface reference to the bean.
// If the return value is of the Remote interface type, you can use it
// to access the remote interface methods. You can also just use the
// client object to call the Remote interface wrappers.
}
}

保存,编译,运行。

如果出现:

-- Initializing bean access.
log4j:WARN No appenders could be found for logger (org.jboss.security.SecurityAssociation).
log4j:WARN Please initialize the log4j system properly.
-- Succeeded initializing bean access through Home interface.
-- Execution time: 2113 ms.
-- Calling create()
-- Succeeded: create()
-- Execution time: 261 ms.
-- Return value from create(): HelloBean:Stateless.
-- Calling hello(fangw)
-- Succeeded: hello(fangw)
-- Execution time: 10 ms.
-- Return value from hello(fangw): hello,fangw!.

那就ok了,可以睡觉了,今天就到这里。

分享到:
评论

相关推荐

    用jbuilder7+jboss3+vss开发EJB-1

    ### 使用JBuilder7 + JBoss3 + VSS开发EJB详解 #### 一、Java生态与Web应用开发 Java从最初被理解为一种简单的编程语言,已经演变成为一个强大的平台,覆盖了从桌面应用到企业级服务的广泛领域。在Java庞大的生态...

    用jbuilder7+jboss3+vss开发EJB-3

    标题与描述概述的知识点主要集中在使用JBuilder 7结合JBoss 3以及VSS进行EJB(Enterprise JavaBeans)开发的全过程。以下是对这一过程的详细解析与扩展: ### EJB开发环境搭建 #### 1. **VSS(Visual SourceSafe)...

    用jbuilder7+jboss3+vss开发EJB-2

    本文主要介绍如何使用JBuilder7、JBoss3和VSS进行EJB(Enterprise JavaBeans)的开发,特别是在配置JDBC驱动以连接SQL Server 2000,并在JBoss应用服务器上部署和运行应用程序的过程。 一、配置JBoss以连接SQL ...

    使用Eclipse+Jboss+MySql开发EJB

    总的来说,"使用Eclipse+Jboss+MySql开发EJB"是一个综合性的任务,涉及了开发环境的搭建、企业级组件的设计与实现、数据库的连接和操作以及应用的部署与测试。掌握这一流程对于Java EE开发者来说是至关重要的,因为...

    MyEclipse+JBoss开发EJB.doc

    总的来说,MyEclipse结合JBoss提供了一个高效、便捷的EJB开发环境,使开发者能够轻松地利用EJB技术来构建企业级应用。无论是新手还是经验丰富的开发者,都可以从中受益,实现更高质量的Java EE项目开发。

    EJB+JBOSS6.0+STRUT2简单登录实例

    &lt;!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" ... &lt;!-- 定义包管理配置的action 继承struts-default.xml中的配置 --&gt; &lt;!-- 定义Action(login.action) --&gt; ...

    手把手系列-Eclipse+JBossIDE+JBoss开发环境配置

    本教程主要关注的是如何使用Eclipse集成开发环境(IDE)配合JBossIDE插件以及JBoss应用服务器来搭建一个高效、稳定的Java EE开发环境。接下来,我们将深入探讨这个主题,详细讲解每一个步骤。 一、Eclipse简介 ...

    yeclipse7.0+JBoss5.0测试EJB3.0环境搭建过程详解

    ### yeclipse7.0+JBoss5.0测试EJB3.0环境搭建过程详解 在深入探讨如何在yeclipse7.0与JBoss5.0环境下构建和测试EJB3.0应用之前,让我们先了解一些背景知识。EJB(Enterprise JavaBeans)是Java平台的一部分,用于...

    eclipse + JBoss 5 + EJB3开发指南中的代码

    在本文中,我们将深入探讨如何使用Eclipse集成开发环境(IDE)与JBoss Application Server 5相结合,利用Enterprise JavaBeans(EJB)3.0规范进行应用程序开发。EJB3是Java EE(企业版)平台的一个重要组成部分,它...

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1

    经典JAVA EE企业应用实战基于WEBLOGIC JBOSS的JSF+EJB 3+JPA整合开发——源码.part1 其他部分详见我的上传列表,全部分卷下载完成才能解压。 本书介绍了Java EE规范的三大主要规范JSF、EJB 3和JPA,其中JSF是Sun...

    使用eclipse通过jboss开发简单的ejb应用(jboss7.x & ejb3.x)

    在本文中,我们将深入探讨如何使用Eclipse IDE与JBoss应用程序服务器(版本7.x)来开发和部署一个基于EJB 3.x的简单企业级Java应用程序。EJB(Enterprise JavaBeans)是Java平台上的核心组件,它提供了一种标准的...

    eclipse + JBoss 5 + EJB3开发指南

    ### Eclipse + JBoss 5 + EJB3 开发指南 #### (1):编写第一个无状态的SessionBean ##### 一、配置开发环境 在开始编写无状态的SessionBean之前,首先需要确保开发环境已经正确配置。以下是所需的主要组件: 1...

    myeclpise+jboss开发EJB

    标题与描述:“myeclipse+jboss开发EJB” 在IT领域,尤其是对于Java开发者而言,掌握如何使用MyEclipse和JBoss开发企业级Java Bean(EJB)是至关重要的技能。MyEclipse作为一款功能丰富的集成开发环境(IDE),不仅...

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3

    经典Java EE企业应用实战:基于WebLogic/JBoss的JSF+EJB 3+JPA整合开发 part3

    ejb3.0 +jboss4.2 实例开发

    **ejb3.0 + jboss4.2 实例开发** EJB 3.0 (Enterprise JavaBeans 3.0) 是 Java 平台企业版 (Java EE) 的一部分,它简化了Java 应用服务器中的组件开发。在这个实例开发过程中,我们将探讨如何在 JBoss 4.2 服务器上...

    EJB3+JBOSS5+JPA整合

    EJB3是EJB规范的一个重要版本,它极大地简化了EJB的开发模型,引入了大量的注解,使得开发者无需编写大量的XML配置文件就能实现企业级功能。 在EJB3中,主要的组件包括: 1. **实体Bean (Entity Beans)**:代表持久...

    JBOSS+EJB3+MYSQL开发

    总结来说,JBOSS+EJB3+MySQL的开发涉及到以下几个关键步骤: 1. 安装和配置JBOSS服务器,确保其能够正常运行。 2. 将MySQL JDBC驱动添加到JBOSS服务器的类路径。 3. 创建并配置`mysql-ds.xml`文件,定义数据源连接...

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理

    Nginx 1.2.1 + JBOSS AS 7 负载配置及Session处理 本文主要介绍了如何使用 Nginx 1.2.1 和 JBOSS AS 7 实现负载均衡和 Session 处理。文章首先介绍了使用 Nginx 1.2.1 和 JBOSS AS 7 做为应用服务器的理由,然后...

Global site tag (gtag.js) - Google Analytics