`

Ejb学习之一---EJB3+Jboss4.2配置开发

    博客分类:
  • J2EE
阅读更多
昨天,打算把Ejb整理下,最早用到Ejb+Jboss是在三年前了。技术的关注度,往往同你所在项目有关。所以,昨天用Ejb也是碰到一个配置问题,搞了我半天。
Point:
Ejb定义
配置
Exception
实例(Sample)

一 Ejb 定义
   所谓Ejb,即Enterprise Java bean----企业级的Java bean.但同Java Bean有 区别:
  1.Javabean是面向于业务逻辑和表示层的显示。对于简单的服务器端应用而言,是个不错的选择。其只是一个组件。
  2.Ejb是部署在服务器上的可执行组件或商业对象。通过Socket允许对其进行远程访问或在特定服务器(eg:Jboss/tomcat/Weblogic/Websphere等)上进行安装或部署。用户不需要关心其底层操作,只需要关心外部实现而已。Ejb是一个容器,是一个组件架构。
二 Configuration(配置):
   关于Ejb3+Jboss 4的开发配置,在网上挺多,工作和即将工作的同仁,在google上search一下,就有很多的文章。在这里,我只是简单的说明下:
   1. Jboss配置:
   在以下web Site上download后,然后解压缩即可,建议:解压缩任何文件,最后不要使文件路径包含空格之类的字符,有时候会出现一些意想不到的错误。
  web site:http://www.jboss.org/jbossas/downloads
  注意:Jboss 4和Jboss 5在Jbossall_client.jar(Jboss 4)和Jboss_all_client.jar(Jboss 5)上有很大区别。
   设置系统变量:
   JBOSS_HOME:Jboss的解压缩路径
    Path:%JBOSS_HOME%/bin
   运行Bin目录下的Run.bat文件,以下是运行的log记录:
  02:44:08,437 INFO  [Server] Starting JBoss (MX MicroKernel)...
02:44:08,437 INFO  [Server] Release ID: JBoss [Trinity] 4.2.0.GA (build: SVNTag=JBoss_4_2_0_GA date=200705111440)
02:44:08,453 INFO  [Server] Home Dir: C:\TDDOWNLOAD\jboss-4.2.0.GA
02:44:08,453 INFO  [Server] Home URL: file:/C:/TDDOWNLOAD/jboss-4.2.0.GA/
02:44:08,453 INFO  [Server] Patch URL: null
02:44:08,453 INFO  [Server] Server Name: default
02:44:08,453 INFO  [Server] Server Home Dir: C:\TDDOWNLOAD\jboss-4.2.0.GA\server\default
02:44:08,453 INFO  [Server] Server Home URL: file:/C:/TDDOWNLOAD/jboss-4.2.0.GA/server/default/
02:44:08,468 INFO  [Server] Server Log Dir: C:\TDDOWNLOAD\jboss-4.2.0.GA\server\default\log
02:44:08,468 INFO  [Server] Server Temp Dir: C:\TDDOWNLOAD\jboss-4.2.0.GA\server\default\tmp
02:44:08,468 INFO  [Server] Root Deployment Filename: jboss-service.xml
02:44:09,062 INFO  [ServerInfo] Java version: 1.6.0_13,Sun Microsystems Inc.
02:44:09,062 INFO  [ServerInfo] Java VM: Java HotSpot(TM) Client VM 11.3-b02,Sun Microsystems Inc.
02:44:09,062 INFO  [ServerInfo] OS-System: Windows XP 5.1,x86
02:44:09,859 INFO  [Server] Core system initialized
02:44:14,078 INFO  [WebService] Using RMI server codebase: http://127.0.0.1:8083/
02:44:14,078 INFO  [Log4jService$URLWatchTimerTask] Configuring from URL: resource:jboss-log4j.xml
02:44:15,062 INFO  [TransactionManagerService] JBossTS Transaction Service (JTA version) - JBoss Inc.
02:44:15,062 INFO  [TransactionManagerService] Setting up property manager MBean and JMX layer
02:44:15,484 INFO  [TransactionManagerService] Starting recovery manager
02:44:15,703 INFO  [TransactionManagerService] Recovery manager started
02:44:15,703 INFO  [TransactionManagerService] Binding TransactionManager JNDI Reference
02:44:21,625 INFO  [EJB3Deployer] Starting java:comp multiplexer
02:44:25,281 INFO  [ServiceEndpointManager] jbossws-1.2.1.GA (build=200704151756)
02:44:28,531 INFO  [AprLifecycleListener] The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: F:\Program Files\Java\jdk1.6.0_13\bin
02:44:28,718 INFO  [Http11Protocol] Initializing Coyote HTTP/1.1 on http-127.0.0.1-8080
02:44:28,734 INFO  [AjpProtocol] Initializing Coyote AJP/1.3 on ajp-127.0.0.1-8009
02:44:28,734 INFO  [Catalina] Initialization processed in 846 ms
02:44:28,734 INFO  [StandardService] Starting service jboss.web
02:44:28,734 INFO  [StandardEngine] Starting Servlet Engine: JBossWeb/2.0.0.GA
02:44:28,843 INFO  [Catalina] Server startup in 104 ms
02:44:29,156 INFO  [TomcatDeployer] deploy, ctxPath=/, warUrl=.../deploy/jboss-web.deployer/ROOT.war/
02:44:30,578 INFO  [TomcatDeployer] deploy, ctxPath=/invoker, warUrl=.../deploy/http-invoker.sar/invoker.war/
02:44:31,187 INFO  [TomcatDeployer] deploy, ctxPath=/jbossws, warUrl=.../tmp/deploy/tmp7117955528796901291jbossws-context-exp.war/
02:44:31,484 INFO  [TomcatDeployer] deploy, ctxPath=/jbossmq-httpil, warUrl=.../deploy/jms/jbossmq-httpil.sar/jbossmq-httpil.war/
02:44:33,265 INFO  [TomcatDeployer] deploy, ctxPath=/web-console, warUrl=.../deploy/management/console-mgr.sar/web-console.war/
02:44:34,671 INFO  [MailService] Mail Service bound to java:/Mail
02:44:35,203 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/jboss-ha-local-jdbc.rar
02:44:35,312 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/jboss-ha-xa-jdbc.rar
02:44:35,437 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/jboss-local-jdbc.rar
02:44:35,593 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/jboss-xa-jdbc.rar
02:44:35,781 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/jms/jms-ra.rar
02:44:35,984 INFO  [RARDeployment] Required license terms exist, view META-INF/ra.xml in .../deploy/quartz-ra.rar
02:44:36,000 INFO  [QuartzResourceAdapter] start quartz!!!
02:44:36,156 INFO  [SimpleThreadPool] Job execution threads will use class loader of thread: main
02:44:36,218 INFO  [QuartzScheduler] Quartz Scheduler v.1.5.2 created.
02:44:36,218 INFO  [RAMJobStore] RAMJobStore initialized.
02:44:36,218 INFO  [StdSchedulerFactory] Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
02:44:36,218 INFO  [StdSchedulerFactory] Quartz scheduler version: 1.5.2
02:44:36,234 INFO  [QuartzScheduler] Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
02:44:37,906 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=DataSourceBinding,name=DefaultDS' to JNDI name 'java:DefaultDS'
02:44:38,484 INFO  [A] Bound to JNDI name: queue/A
02:44:38,484 INFO  [B] Bound to JNDI name: queue/B
02:44:38,500 INFO  [C] Bound to JNDI name: queue/C
02:44:38,500 INFO  [D] Bound to JNDI name: queue/D
02:44:38,500 INFO  [ex] Bound to JNDI name: queue/ex
02:44:38,546 INFO  [testTopic] Bound to JNDI name: topic/testTopic
02:44:38,546 INFO  [securedTopic] Bound to JNDI name: topic/securedTopic
02:44:38,562 INFO  [testDurableTopic] Bound to JNDI name: topic/testDurableTopic
02:44:38,562 INFO  [testQueue] Bound to JNDI name: queue/testQueue
02:44:38,640 INFO  [UILServerILService] JBossMQ UIL service available at : /127.0.0.1:8093
02:44:38,734 INFO  [DLQ] Bound to JNDI name: queue/DLQ
02:44:39,093 INFO  [ConnectionFactoryBindingService] Bound ConnectionManager 'jboss.jca:service=ConnectionFactoryBinding,name=JmsXA' to JNDI name 'java:JmsXA'
02:44:39,671 INFO  [JmxKernelAbstraction] creating wrapper delegate for: org.jboss.ejb3.stateless.StatelessContainer
02:44:39,687 INFO  [JmxKernelAbstraction] installing MBean: jboss.j2ee:jar=EjbProject.jar,name=HelloWorldEjbBean,service=EJB3 with dependencies:
02:44:39,984 INFO  [EJBContainer] STARTED EJB: com.ejb.bean.HelloWorldEjbBean ejbName: HelloWorldEjbBean
02:44:40,093 INFO  [EJB3Deployer] Deployed: file:/C:/TDDOWNLOAD/jboss-4.2.0.GA/server/default/deploy/EjbProject.jar/
02:44:40,281 INFO  [TomcatDeployer] deploy, ctxPath=/jmx-console, warUrl=.../deploy/jmx-console.war/
02:44:40,718 INFO  [Http11Protocol] Starting Coyote HTTP/1.1 on http-127.0.0.1-8080
02:44:40,765 INFO  [AjpProtocol] Starting Coyote AJP/1.3 on ajp-1[b]27.0.0.1-8009
02:44:40,781 INFO  [Server] JBoss (MX MicroKernel) [4.2.0.GA (build: SVNTag=JBoss_4_2_0_GA date=200705111440)] Started in 32s:313ms

   2 Ejb3配置:
   你可以下载Jboss IDE for Eclipse或者MyEclipse即可。以下是其download的Web Sites。
   JbossIDE for Eclipse:http://www.jboss.org/jbosside/download/index.html;
对于MyEclipse,我下载的是8.5,下载地址为:http://downloads.myeclipseide.com/downloads/products/eworkbench/galileo/myeclipse-8.5.0-win32.exe
三 Exception:
  出现错误的Detail info 如下:
Exception in thread "main" java.lang.NoClassDefFoundError: javax/net/SocketFactory
	at org.jnp.interfaces.NamingContextFactory.getInitialContext(NamingContextFactory.java:56)
	at javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:667)
	at javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:247)
	at javax.naming.InitialContext.init(InitialContext.java:223)
	at javax.naming.InitialContext.<init>(InitialContext.java:175)
	at com.ejbclient.ejb.HelloWorldEjbClient.main(HelloWorldEjbClient.java:16)
WARNING: Default charset GBK not supported, using ISO-8859-1 instead

这个错误,犯过这个错误的人不少,但没有一个贴出其中的错误原因:
我开始认为这个错误产生的Root cause:jboss的配置。经过几个小时的折腾,终于搞明白了,是少了jsse.jar文件,这个jar文件到Jre中imort jar即可。
四 Sample
  下面是我做的一个无状态的Session Bean Sample:
   1.Ejb Project:
    Create Ejb3工程,分为两步:
  (1)Create一个Ejb bean Interface:(HelloWorldEjb.java)
   代码如下:
package com.ejb.bean;

/**
 * @author Jamson Huang
 *
 */
public interface HelloWorldEjb {
    /*定义业务逻辑函数*/
	public String sayHelloWorld(String userName);
}

  这里需要注意的是:对于Ejb的业务处理,我们需要采取粗粒度的访问,也就是说,尽量少次数的通过Client去访问。
  (2)Create EjbBean类,实现Interface:(HelloWorldEjbBean.java)
package com.ejb.bean;

import javax.ejb.Remote;
import javax.ejb.Stateless;

/**
 * @author Jamson Huang
 *
 */
@Stateless
@Remote
public class HelloWorldEjbBean implements HelloWorldEjb {
	public String sayHelloWorld(String userName){
		return "Hello World! "+userName;
	}
}

通过Jboss deploy,并且打成jar包,这里产生的Jar包是:EjbProject.jar.
  2 Ejb Client:
   分成三步:
   1) Create 一个Project,然后将Jboss安装目录下的client文件夹里包含的所有Jar包都导入到项目。
   2) 将EjbProject.jar包导入项目中。
   3) Create Class:(HelloWorldEjbClient.java)
   代码如下:
   package com.ejbclient.ejb;

import java.util.Properties;

import javax.naming.InitialContext;

import com.ejb.bean.HelloWorldEjb;

/**
 * @author Jamson Huang
 * @version 1.0.0
 */
public class HelloWorldEjbClient {
	public static void main(String[] args)throws Exception{
/*Properties对象可以通过读取Jndi.properties文件产生,对于项目开发而言,应该是作为一个配置文件*/
		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");
		
		InitialContext context = new InitialContext(props);
		
		HelloWorldEjb helloWorldEjb = (HelloWorldEjb)context.lookup("HelloWorldEjbBean/remote");
		String strName = helloWorldEjb.sayHelloWorld("Jamson");
		
		System.out.println(strName);
	}
}

jndi.properties:
java.naming.factory.initial=org.jnp.interfaces.NamingContextFactory
java.naming.factory.url.pkgs=org.jboss.naming\:org.jnp.interfaces
java.naming.provider.url=localhost:1099


run main方法:
log4j:WARN No appenders could be found for logger (org.jboss.security.SecurityAssociation).
log4j:WARN Please initialize the log4j system properly.
Hello World! Jamson

下面会陆续介绍Ejb。
    
2
5
分享到:
评论

相关推荐

    ejb3.0 +jboss4.2 实例开发

    总之,ejb3.0 + jboss4.2 的实例开发涵盖了从环境准备、代码编写、bean 创建、打包到部署的全过程,是学习 EJB 3.0 和 JBoss 集成应用的基础步骤。通过这样的实践,开发者能够更好地理解和掌握企业级 Java 应用的...

    使用Eclipse+Jboss+MySql开发EJB

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

    jboss7ejb配置文件

    在JBoss 7及以上版本中,对EJB的配置过程相较于之前的版本有所变化,主要涉及到两个关键的配置文件:`jboss-ejb3.xml`和`ejb-jar.xml`。 `ejb-jar.xml`文件是EJB模块的标准配置文件,遵循Java EE规范。在这个文件中...

    MyEclipse+JBoss开发EJB.doc

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

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

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

    EJB3+JBOSS5+JPA整合

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

    JAVA-SERVLET-+-MYSQL-+-JBOSS-开发起步

    ### JAVA-SERVLET-+-MYSQL-+-JBOSS-开发起步 #### 一、Java Servlet、Jboss、Mysql、Eclipse 开发介绍 在现代Web应用开发领域中,Java Servlet技术结合MySQL数据库以及JBoss应用服务器是构建企业级应用的常见组合...

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

    3. **Myeclipse 7.0**:Myeclipse是一款强大的集成开发环境(IDE),特别适合Java EE开发。在Myeclipse中,你需要配置JDK和JBoss,以便它们可以协同工作。如果你使用的是JBoss 5.x版本,那么JDK版本必须是6.0,这是...

    springmvc4.2+mybatis3.0+jboss

    总的来说,"springmvc4.2+mybatis3.0+jboss"这个项目组合提供了一种高效、可维护的Java Web开发方式,利用Spring MVC的MVC架构,MyBatis的数据持久层能力,以及JBoss的运行环境,共同构建出强大的企业级应用。

    用jbuilder7+jboss3+vss开发EJB-1

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

    ejb3.0+Weblogic+Jboss安装配置及入门例子

    EJB3.0是EJB规范的一个重要版本,它在2006年发布,引入了许多重大的改进,简化了开发流程,降低了对XML配置的依赖,并引入了注解(Annotation)来简化组件的声明。 **EJB3.0的关键特性** 1. 注解驱动:EJB3.0引入了...

    myeclpise+jboss开发EJB

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

    用jbuilder7+jboss3+vss开发EJB-3

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

    eclipse + JBoss 5 + EJB3开发指南

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

    用jbuilder7+jboss3+vss开发EJB-2

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

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

    -- 定义包管理配置的action 继承struts-default.xml中的配置 --&gt; &lt;package name="actions" extends="struts-default"&gt; &lt;!-- 定义Action(login.action) --&gt; &lt;!-- 定义转发路径对应的字符串名 --&gt; ...

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

    EJB3是Java EE(企业版)平台的一个重要组成部分,它极大地简化了企业级组件的开发和部署流程,减少了对XML配置的需求,并引入了更丰富的注解支持。 首先,我们来了解Eclipse,这是一个广泛使用的开源IDE,尤其适合...

    JBOSS4.2 基本配置(全)

    JBOSS4.2是一款开源的企业级Java应用服务器,它基于Java EE规范,提供了对Web服务、EJB(Enterprise JavaBeans)、JMS(Java Message Service)等众多服务的支持。在进行JBOSS4.2的基本配置时,我们需要关注以下几个...

Global site tag (gtag.js) - Google Analytics