`
xiaolongfeixiang
  • 浏览: 236848 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

GlassFish中Application Client(应用程序客户端)中使用@EJB

    博客分类:
  • EJB3
阅读更多
最近在研究EJB,刚开始使用的是JBoss4.2。JBoss可以满足开发EJB中的绝大部分需求。但是JBoss4.2不支持@EJB注释在 Servelt中的使用。因为JBoss并不是JavaEE5.0规范的完全实现产品。出于好奇,将服务器更换为GlassFish2.1。

     网上有些关于如何在GlassFish的Application Client(应用程序客户端)中使用@EJB的文章,但是都是简单的几句:

   “appclient -client  ejbClient.jar

     ............................”

    (这在《Beginning EJB.3.Application.Development》一书中也是这样,很简略。)

在研究了2天后,终于可以在Application Client(应用程序客户端)中使用@EJB注解了,要求如下:

第一步:EJB模块部署到GlassFish中

第二步:将客户端打包成jar(这是重点)

              jar文件必备的要点如下(XXX是您的EJB独立客户端的路径):

              1、jar文件必须有Entry Point(即入口),否则:“无法确定XXX中JavaEE模块类型”的错误。

              2、jar文件中不能含有EJB模块的实现,否则:“归档文件XXX似乎有效,但应为应用客户机或企业应用程序”。

第三步:在%GlassFish%\bin\下,调用 appclient -client  XXX.jar
分享到:
评论
2 楼 xiaolongfeixiang 2009-11-23  
yz2yz 写道
我用的jboss-5.1.0.GA,安装了jboss-ejb3-plugin-1.0.18,在servlet 2.5里,可以用@EJB的,不过要把ejb和web的工程打在一个ear文件里才行,我试过可以了!


你说的很对。 在JavaEE  EJB3.0规范中,@EJB注释可以对以下组件进行注释: 

    * Servlets
    * ServletContextListeners
    * Servlet Filters
    * JSF managed beans
    * EJB session bean
    * EJB interceptors
    * JAX-WS service endpoints

然而在JBoss4.2以及JBoss5.0中,都无法实现在Servlet中注入EJB!。(当然借助于插件就可以了!)。


  不过我说的是另外一种情况,即只有在Glassfish中才有的情况。一般独立的客户端(比如JavaSE客户端),调用在JBOSS中的EJB组件时,只能使用JNDI Lookup的方法。而无法使用到JavaEE环境下的依赖注入、以及依赖查找的方式来获取EJB组件。
  然而,GlassFish专门提供了一个工具--- appclient.bat。通过这个工具,一个独立的客户端,可以使用JavaEE环境下才用的特性(当然前提是GlassFish必须启动)。

  新建一个StatelessSessionBean:
 
package app.service;

import javax.ejb.Remote;

@Remote
public interface HelloWorld {
	public String sayHello();
}
  


 
package app.service.impl;

import javax.ejb.Stateless;

import app.service.HelloWorld;

@Stateless(mappedName="ejb/HelloWorld")
public class HelloWorldBean implements HelloWorld {

	@Override
	public String sayHello() {	
		return "你好,GlassFish!";
	}

}
  


   然后建立一个JavaSE的客户端:
 
package app.test;

import javax.ejb.EJB;

import app.service.HelloWorld;

public class TestEJB {

	@EJB(mappedName="ejb/HelloWorld")
	static HelloWorld hello;
	
	void doTest(){
		System.out.println(hello.sayHello());
	}
	
	public static void main(String[] agrs){
		new TestEJB().doTest();
	}
}


注意:
  • static关键字不能缺少,否则会报错!
  • @EJB的第2中形式 @EJB(name=”target” , beanInterface= XXX.class),如何在独立客户端中使用,尚不明确!



相信,这个客户端在JBoss中是无法工作的。但是将TestEJB打成jar包后(如何打包请看原帖),利用GlassFish提供的工具appclient.bat,独立的客户端就可以利用JavaEE提供的服务了!

至于,这个工具有多大的用处,目前尚不明了。本文只是说明一个常见的用法!
1 楼 yz2yz 2009-11-22  
我用的jboss-5.1.0.GA,安装了jboss-ejb3-plugin-1.0.18,在servlet 2.5里,可以用@EJB的,不过要把ejb和web的工程打在一个ear文件里才行,我试过可以了!

相关推荐

    EJB分布式远程调用的小例子的简单实现

    EJB(Enterprise JavaBeans)是Java EE平台中的核心组件,用于构建可扩展的、安全的、事务处理的服务器端应用程序。本示例将探讨如何实现EJB的分布式远程调用,这是一种让不同网络节点上的软件组件能够相互通信的...

    EJB 知识与运行环境设置(笔记)

    企业JavaBeans (EJB) 是Java平台对企业级应用程序组件的一种标准化模型。它属于Java EE规范的一部分,主要用于构建可移植的企业级应用。EJB定义了三种主要的Bean类型: 1. **会话Bean(Session Bean)**: - 会话...

    Jersey User Guild

    - **Common Jersey Use Cases(常见 Jersey 使用场景)**:包括在 Glassfish 中的 Servlet 基础应用程序,在 JDK 中的客户端应用程序,以及支持容器上的服务器端应用程序。 - **List of modules(模块列表)**:...

    GlassFishSecuritySecureyourGlassFishinstallationWebapplicationsEJBapplicationsApplicationclientmoduleandWebServicesusingJavaEEandGlassFish.pdf 英文原版

    GlassFish Security – Secure your GlassFish installation Web applications EJB applications Application client module and Web Services using Java EE and GlassFish

    Jetty中文手册

    如何在Maven中使用Jetty 如何在Ant中使用Jetty Maven和Ant的更多支持 Jetty Maven插件(Plugin) Jetty Jspc Maven插件(Plugin) Maven web应用工程原型 Ant Jetty插件(Plugin) 使用集成开发环境(IDEs) 在...

    J2EE框架 J2EE框架

    - **客户端层(Client Layer)**:这是用户与系统交互的部分,可以是基于Web的浏览器或者富客户端应用。 - **Web层(Web Layer)**:包含Servlet和JSP(Java Server Pages),负责处理HTTP请求并生成动态网页内容。...

    最全的JSF框架Oracle ADF 开发资料分享

    - **ADF Faces Rich Client**:这是Oracle ADF的主要界面组件库,提供了丰富的用户界面元素,如表格、树形结构、面板等,用于创建高度交互的应用程序。 - **ADF Model**:用于处理数据模型和业务逻辑,包括对EJB...

    jersey最新jar包

    - jersey-container-servlet:用于Servlet容器的模块,让你能在像Tomcat这样的容器中部署jersey应用。 - jersey-client:客户端API,用于发起HTTP请求并接收响应。 - jersey-media-*:支持不同MIME类型的模块,如...

    eclipse-march2018-oxygen.3-win32-x86_64.zip

    7. **Eclipse IDE for RCP and RAP Developers**:除了标准的Java EE版本,Eclipse还提供了RCP(Rich Client Platform)和RAP(RWT Application Platform)开发工具,用于构建桌面和Web应用。 8. **用户体验改进**...

Global site tag (gtag.js) - Google Analytics