菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local
不废话。直接进入正题:
在Jboss4及曾经的版本号中,例如以下代码能够成功部署:
package com.tjb.ejb; import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless; @Stateless
@Remote
@Local
public class UserManagerBean implements UserManager { public void saveUser(User user) {
System.out.println("User对象已被保存");
} }
从代码能够看出。UserManagerBean对接口UserManager 同一时候声明了远程和本地两种公布方式。这样的方式在Jboss4及曾经的版本号中是被同意的,可是Jboss5以后的版本号则觉得这是错误的(详细从哪个版本号開始改的,这里就不追究了)。假设将上面的代码部署到Jboss5中,会出现下面的错误提示:
java.lang.RuntimeException: @Remote and @Local may not both be specified on the same interface "interface
com.lzq.ejb.UserManager" for EJB "UserManagerBean" per EJB3 Spec 4.6.6, Bullet 5.4 [EJBTHREE-751]
at org.jboss.ejb3.proxy.factory.ProxyFactoryHelper.getLocalAndBusinessLocalInterfaces(ProxyFactoryHelper.java:233)
at org.jboss.ejb3.proxy.factory.ProxyFactoryHelper.getLocalBusinessInterfaces(ProxyFactoryHelper.java:550)
at org.jboss.ejb3.session.SessionContainer.resolveBusinessInterfaces(SessionContainer.java:192)
at org.jboss.ejb3.EJBContainer.instantiated(EJBContainer.java:1564)
at org.jboss.ejb3.session.SessionContainer.instantiated(SessionContainer.java:182)
at org.jboss.ejb3.Ejb3Deployment.deployElement(Ejb3Deployment.java:726)
... 33 more
依据第一句话就能看出来。是由于不同意对同一个接口同一时候声明Remote和Local两种公布方式,因此。在Jboss5中要实现这样的功能,就须要实现两个接口。代码例如以下:
package com.tgb.ejb; import javax.ejb.Local;
import javax.ejb.Remote;
import javax.ejb.Stateless; @Stateless
@Remote(value=UserManagerRemote.class)
@Local(value=UserManagerLocal.class)
public class UserManagerBean implements UserManagerLocal,UserManagerRemote { @Override
public void saveUser(User user) {
System.out.println("Use对象已被保存"); } }
假设两个接口中的方法同样。重写一个就可以。
结论:在Jboss4及曾经的版本号。能够在一个SessionBean中对同一个接口同一时候声明Remote和Local两种公布方式;而在Jboss5以后的版本号中则不同意这样的方式。假设要在一个SessionBean中同一时候使用Remote和Local方式。则必须实现两个接口。并指明哪个接口用哪种方式。推荐使用另外一种。由于不论什么版本号的Jboss都支持此方式。
菜鸟学EJB(二)——在同一个SessionBean中使用@Remote和@Local的更多相关文章
- 菜鸟学EJB(一)——第一个实例
EJB用了那么长时间了,从来没写过关于它的东西,挺对不住它的.今天先写一个简单的小实例,虽然小但是却能体现出EJB的核心——分布式.我们可以将业务逻辑的接口跟实现部署到一台机器上,将调用它们的客户端部 ...
- 菜鸟学Java(十五)——Java反射机制(二)
上一篇博文<菜鸟学编程(九)——Java反射机制(一)>里面,向大家介绍了什么是Java的反射机制,以及Java的反射机制有什么用.上一篇比较偏重理论,理论的东西给人讲出来总感觉虚无缥缈, ...
- 菜鸟学IT之四则运算升级版
菜鸟学IT之四则运算升级版 本次作业要求来自:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE1/homework/2213 团队代码github远程仓库的 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- 菜鸟学Java(十四)——Java反射机制(一)
说到反射,相信有过编程经验的人都不会陌生.反射机制让Java变得更加的灵活.反射机制在Java的众多特性中是非常重要的一个.下面就让我们一点一点了解它是怎么一回事. 什么是反射 在运行状态中,对于任意 ...
- 菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven)
菜鸟学自动化测试(八)----selenium 2.0环境搭建(基于maven) 2012-02-04 13:11 by 虫师, 11419 阅读, 5 评论, 收藏, 编辑 之前我就讲过一种方试来搭 ...
- Mina、Netty、Twisted一起学(二):TCP消息边界问题及按行分割消息
在TCP连接开始到结束连接,之间可能会多次传输数据,也就是服务器和客户端之间可能会在连接过程中互相传输多条消息.理想状况是一方每发送一条消息,另一方就立即接收到一条,也就是一次write对应一次rea ...
- 从头开始学JavaScript (二)——变量及其作用域
原文:从头开始学JavaScript (二)--变量及其作用域 一.变量 ECMAscript变量是松散型变量,所谓松散型变量,就是变量名称可以保存任何类型的数据,每个变量仅仅是一个用于保存值的占位符 ...
- 梳理:python—同一个类中的方法调用
为什么突然在此提到这个梳理问题呢? 因为在自己实践综合练习学过的知识时,突然觉得有些知识点的运用总是不成功,于是翻过课本进行回顾,总是觉得是对的,可是当再进一步思考“既然是对的,为什么在程序中总是不成 ...
随机推荐
- boost之ThreadPool
threadpool是基于boost库实现的一个线程池子库,但线程池实现起来不是很复杂.我们从threadpool中又能学到什么东西呢? 它是基于boost库实现的,如果大家对boost库有兴趣,看看 ...
- Java基础知识强化66:基本类型包装类之JDK5新特性自动装箱和拆箱
1. JDK1.5以后,简化了定义方式. (1)Integer x = new Integer(4):可以直接写成如下: Integer x = 4 ://自动装箱,通过valu ...
- DataGrid( 数据表格) 组件[1]
本节课重点了解 EasyUI 中 DataGrid(数据表格)组件的使用方法,这个组件依赖于Panel(面板).Resizeable(调整大小).LinkButton(按钮).Pageination( ...
- Web应用程序项目XXXX已配置为使用IIS。无法访问IIS元数据库。您没有足够的特权访问计算机上的IIS网站
问题:Windows8下直接使用VS打开项目,出现问题:XXXX已配置为使用IIS.无法访问IIS元数据库.您没有足够的特权访问计算机上的IIS网站.解决:1.以“管理员权限”运行VS,在VS菜单打开 ...
- MYSQL触发器的NEW和OLD的一个小问题
OLD NEW 对于没有插入的字段,OLD和NEW的值都等于原来的记录
- POJ 3273 Monthly Expense(二分查找+边界条件)
POJ 3273 Monthly Expense 此题与POJ3258有点类似,一开始把判断条件写错了,wa了两次,二分查找可以有以下两种: ){ mid=(lb+ub)/; if(C(mid)< ...
- TCP的长连接与短连接
1.TCP连接 在TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,如图所示: (1)第一次握手:建立连接,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEN ...
- django TypeError: 'module' object is not callable
原因:导入模块时直接把模块当函数使用 from rest_framework import reverse #import reverse module @api_view(("GET&qu ...
- Python新手学习基础之函数-关键字参数
关键字参数 函数也可以使用 键 =值 的关键字参数形式被调用,这种调用形式的参数被称为关键字参数. 特别是在一个有许多参数的函数下,你想要指定参数中的部分参数,你可以使用关键字参数的方式来调用函数. ...
- Ubuntu 12.04 更新源
转载自:http://www.cnblogs.com/eastson/archive/2012/08/24/2654163.html 1.首先备份Ubuntu12.04源列表 sudo cp /etc ...