- 浏览: 3517557 次
- 性别:
- 来自: 北京
-
文章分类
最新评论
-
wanglf1207:
EJB的确是个不错的产品,只是因为用起来有点门槛,招来太多人吐 ...
weblogic-ejb-jar.xml的元素解析 -
qwfys200:
总结的不错。
Spring Web Flow 2.0 入门 -
u011577913:
u011577913 写道也能给我发一份翻译文档? 邮件437 ...
Hazelcast 参考文档-4 -
u011577913:
也能给我发一份翻译文档?
Hazelcast 参考文档-4 -
songzj001:
DbUnit入门实战
做EJB开发,那是几年前的事儿了。虽然EJB2.0一直为开发者所诟病,但它毕竟还是有其自身的优势,比如事务、安全管理,实例生命周期管理等,当然核心还是其提供的分布计算。在EJB规范之外,作为Application
Server Vendor,BEA还在规范基础上提供了不少扩展属性,这些属性不是规范要求的,但它提供了额外的功能,对于开发者而言,还是大有用处的。
这些元素可以在weblogic-ejb-jar.xml中配置,下面我们就逐个看看这些元素的含义、作用, 参考文档位于:
http://e-docs.bea.com/wls/docs81/ejb/DDreference-ejb-jar.html#1107234
allows-concurrent-calls
:只能用于stateful
session bean,表明业务方法是否支持并发访问。规范中要求ejb container,如果出现对stateful session
bean并发访问,则抛出remote exception。weblogic对其作了增强,allows-concurrent-calls设为true的时候,并发访问进入时, ejb
container可以block该请求,直到前面的方法调用结束。默认为false。
allow-remove-during-transaction:只能能用于stateful
session bean,表明在一个事务环境中,stateful session
bean的remove()是否可以被调用。allow-remove-during-transaction为false的话,如果在一个事务环境中调用remove(),
那么ejb container会抛出RemoveException。对于那些实现Synchronization接口的session bean,不能使用该元素。refer to
StatefulEJBObject.java(L83)。
cache-between-transactions:用于entity
bean,表明事务之间entiy bean的数据cache模式,为false的话,则entiy bean的数据需要load,
否则使用cache中的数据。refer to DBManager.loadBean()。
cache-type:用于entity
bean,表明在cache溢满的情况下,cache中的数据移除顺序,可选项为:LRU(Least recently used ), NRU(Not
recently used)。NRU的cache最小值为8,当max-beans-in-cache
小于3的时候,weblogic会将它调整成8。
client-authentication:用于表明EJB是否支持或许要客户端验证。
client-cert-authentication:用于表明EJB是否支持或许要客户端授权。
clients-on-same-server:适用于enterprise
bean,表明该ejb的潜在客户端是否位于ejb所部署的同一台managed
server上,默认为false。当ejb被部署到cluster上的时候,所以managed server都会通知其他managed server做jndi
tree更新,以便让其他server了解该ejb的位置情况。即home的stub中会纪录所有部署该ejb的managed
server。如果ejb和其客户端确定位于同一ear中,则可以将其设为true,这样可以降低很多mutli cast开销(weblogic
cluster通过multicast实现heartbeat,以保持server状态、jndi
tree的更新)。
concurrency-strategy:用于指定cached entity
bean的并发访问策略,可选项包括:
Exclusive:当执行事务方法调用的时候,weblogic将会lock cache中的bean
instance,直到tx结束,其他请求才能使用该instance。
Database:weblogic将并发访问控制委托给database,根据database的并发控制策略来决定bean
instance的并发访问。
ReadOnly:对于read only,这样的bean不涉及数据修改,每个tx对应一个bean
instance,可以并行访问。
Optimistic:该策略不会lock任何对象,有weblogic去检查事务期间数据对象是否发生过变化,没有的话,提交事务,否则会滚事务。
confidentiality:用于表明是否支持或需要加密ejb
client&server端的数据传递。
connection-factory-jndi-name &
destination-jndi-name:用于MDB,表明MDB在创建jms connection时需要使用的jms connection
facory,及连接的destination。
create-as-principal-name:用于表明在ejbCreate()方法中连接其他资源的身份。决定ejbCreate中调用身份有三种:create-as-principal-name,ejb-jar.xml中的run-as
指定的角色,匿名,他们按先后顺序选择,如果前面没有配置的话,则使用后面的身份。这个元素仅在ejbCreate方法中的工作不能通过匿名身份完成的时候需要。注意:这个元素只影响stateless和MDB的ejbCreate,为什么没有stateful?
类似元素:remove-as-principal-name
,
passivate-as-principal-name
,
and principal-name
.
delay-updates-until-end-of-tx:用于entity
bean,表明是否延迟update事务中的entity数据直到事务结束。默认为true,这样可以一定程度上因为避免不必要得update而提高性能,但它无法保证事务中update数据的顺序。如果datasource的事务隔离级别为TransactionReadCommittedUncommitted
,即允许未提交的数据被其他客户端读取,那么可以将delay-updates-until-end-of-tx设为false,此时调用的方法需要更新数据的时候,数据会被发送给database,如ejbStore().
注意:delay-updates-until-end-of-tx为false的时候,事务期间update到db的数据都是uncommitted的,commit/rollback由事务决定。
dispatch-policy:用于指定EJB在哪个线程池上运行,默认线程池为:weblogic.queue.default。对于MDB,使用其他JMS
Provider的destination驱动的时候,weblogic可能会忽略diapatch-policy,因为MDB可能会跑在provider的线程上。比如IBM
MQSeries的non-tx-queue。对于MQ的tx-queue, nontx-topic &
tx-topic,dispatch-policy都是起作用的。对于MDB部署期间,容器负责创建的实例数按照如下算法计算:
default thread
pool: maxConcurrentMDBs =
Min(max-beans-free-pool, default-thread-pool-size/2+1)
.如果使用默认thread
pool,创建的实例数为max-beans-free-pool和default-thread-pool-size/2+1之间的小者。
customer
thread pool: maxConcurrentMDBs =
Min(max-beans-free-pool, thread-pool-size).使用定制thread
pool的时候,创建的实例数为max-beans-free-pool和thread-pool-size之间的小者。
ejb-local-reference-description
& ejb-reference-description:用于指定该bean引用的local/remote
ejb的信息,包括ejb-ref-name及jndi-name。name需要和ejb-ref-name or
ejb-local-ref中的匹配。
enable-bean-class-redeploy:默认情况下,ejb的实现类和ejb
module中的其他类被同一个class loader加载,他们之间是相互可见的。当
enable-bean-class-redeploy
为true的时候,ejb实现类及其父类被ejb
module的子类所加载,即ejb实现类和ejb module中的其他类位于不同的class
loader中,这样可以使ejb实现类单独redeploy,而无需redeploy
module中的其他类。这样用会有个潜在问题,因为ejb实现类和其他类位于不同的class
loader中,实现类对于其他类不再可见,其他类不能再引用该实现类。对于该实现类,如果要使用其他类的package
protected方法的话,也是不可的,比如EJBHelper,必须将那些方法申明为public。否则会出现IllegalAccessErrors
。注意:enable这个属性,必须使用two-phase-deploy,关于two-phase-deploy,请参考:http://e-docs.bea.com/wls/docs81/deployment/concepts.html#TwoPhaseDeployment
enable-call-by-reference:用于决定处理ejb方法参数的时候,是传值,还是传引用,而不关心客户端是local
or remote。注意:即使enable-call-by-reference为false,下面的情况下还是pass by
reference的,
1:local interface的参数传递
2:非序列化的参数
3:When all the business
methods in the Remote interface are detected and the Home interface has
parameters whose types are immutable.
当enable-call-by-reference为true的时候,因为不需要做参数拷贝,这样可以提高方法性能。
enable-dynamic-queries:该值为true的时候,说明CMP是动态查询的。
entity-cache:用于指定entity
bean的cache情况,包括如下子元素:max-beans-in-cache
,idle-timeout-seconds
,read-timeout-seconds
,concurrency-strategy。
entity-cache-ref:用于定义引用weblogic-application.xml
中定义的entity
cache信息。
entity-cache-name:为该ejb指定一个app level的cache,app
level的cache是为同一app中entity的共享的。这个cache name必须和weblogic-application.xml
定义的name匹配。关于app
level entity
cache,请参考:http://e-docs.bea.com/wls/docs81/programming/app_xml.html
entity-clustering:指定entity
bean在cluster中的复制信息,包括:home-is-clusterable,
home-load-algorithm,
home call-router-class-name,
use-serverside-stubs。
estimated-bean-size:
finders-load-bean:
global-role:
home-is-clusterable:默认为true。如果设定为false,通过initial
context lookup到的home stub中只有local
server的信息,而不包含cluster中其他server的信息。如果拿到的stub中对应的server为A,如果调用home.create()时,serverA已经crash,那么调用无法被failover到cluster中的其他server,客户端看到的ConnectionException。
home-load-algorithm:指定home的负载算法,默认为weblogic.cluster.defaultLoadAlgorithm对应的算法,如果没有defaultLoadAlgorithm的话,则为round-robin。可选项包括:
round-robin:说明initial context在lookup
home对象的时候,使round-robin的,如果后台有3个server,3个客户端执行lookup,那么返回的home对象分别连接到后端的3个server上。而且home对象上执行的业务方法也是round-robin的,比如serverA上的home在客户端被执行了3次business
method,那么这3次business
method也是round-robin的,即后端3个server上分别执行了一次。
RoundRobinAffinity:和round-robin基本一样,区别是home
business method不是load banlance,而是affinity的,上面例子的结果是:3次business
methods都会在serverA上执行。
random | weight-based | RandomAffinity |
WeightBasedAffinity
home
call-router-class-name
:用于指定客户定制的bean method router
class名,这个类要求实现weblogic.rmi.cluster.CallRouter,如果指定了这个元素,那么每次方法调用前都会调用该类的一个实例,以根据方法参数决定方法将被route到哪个server上去执行。
idempotent-methods:
identity-assertion:
idle-timeout-seconds:指定stateful
session bean在cache中的驻留时间,如果idle-timeout-seconds已过,同时cache中的实例数也达到max-beans-in-cache,该bean将会从cache中remove,被remove的bean,容器会调用ejbPassivate(),并将从memory中移出。默认为600,最小值为1。
initial-beans-in-free-pool:用于指定deploy的时weblogic在实例池中创建的实例数,默认为0。指定一个具体数值的话,有利于提高首次调用速度(调用时无需再去创建实例),用于stateless
session bean, message driven bean, entity
bean。
initial-context-factory:用于指定MDB在创建jms connection时使用的jms connection
factory的jndi
name。
invalidation-target:
is-modified-method-name:
isolation-level:指定ejb的事务隔离级别,可选项为:
TransactionSerializable:
TransactionReadCommitted:只读取其他tx已提交的数据
TransactionReadUncommitted
:允许读取其他tx未提交的数据
TransactionRepeatableRead:如果某数据子集已经被该tx读取过,重复读取相同数据时,将返回同样的结果,尽管期间其他tx可能对该数据作过更新。
下面两个只适用于oracle,同时必须是cmp:
TransactionReadCommittedForUpdate:该值会将isolation-level设为TransactionReadCommitted,同时会在select语句后面加上for
update,这将导致select对应的rows被db lock,等待update,然后将其他tx提交后的数据交给该tx。如果在for
update的时候,db无法获取到rows的lock,那么select会阻塞,直到获取lock,并得到数据。它可以避免TRANSACTION_SERIALIZABLE
中可能出现的ORA-08177。
TransactionReadCommittedForUpdateNoWait:同上,区别是select后面加上的是for
update no wait,如果db无法获取rows的lock,那么select立即返回,同是ejb container会抛出异常。个人理解: for
update是锁定对象,不让其他请求进入,否则lock可能被其他对象拿走。
jms-client-id:指定MDB连接到destination时所使用的client
id。如果connection-factory-jndi-name
配置了connection
factory,而且config.xml中配置了client id,可以使用该id。如果config.xml中没有定义client id,或者没有配置connection-factory-jndi-name
(此时使用默认的connection
factory),那么jms-client-id开始起作用。
jms-polling-interval-seconds:指定在jms
server出现故障的时候,MDB重新连接jms
server的间隔。MDB为对应destination的consumer,如果destination驻留于其他server或foreign jms
provider上,可能因为种种原因,导致remote jms server
unreachable,这时MDB就需要主动重现连接。
max-beans-in-free-pool:用于指定实例池中最多能保留实例的个数。pool中实例数大于该值时,ejb
container会主动shrink该pool,以减小不必要的内存开销。比如:最大实例数为20,某一时刻并发客户端为50,当这些请求都处理完成时,实例全部还池,那么池中的实例数不做shrink的话,将保持为50,甚至更多。这个最大实例数,需要根据实际应用客户量的情况来做决定。多了浪费内存,少了又影响性能,所以根据实际情况去做权衡。
method-intf:指定哪些接口需要设定isolation
level。
max-beans-in-cache:表示cache中的最大实例数,这个数跟entity bean的concurrency-strategy
有关,对于exclusive和readonly,max-beans-in-cache
=active beans(ready bean
enlisted in a transaction) + ready beans(bean has an identity—an associated
primary key, but has not been enlisted in transaction
),对于concurrency-strategy为
Database的,cache中可以包含
max-beans-in-cache个ready和activate
bean实例。
passivate-as-principal-name:类似于create-as-principal
name。
persistence-use:用于指定CMP存储相关的信息。
persistent-store-dir:指定stateful
sesion
bean在做passivate\activate时,session信息的存取目录。
principal-name:在配置role时所指定的真实身份名称,定义security-role-assignment
的时候,至少需要一个principal
name。
provider-url:指定MDB在new initial context(调用者实际是ejb
container)时所用的provider url,MDB在创建consumer的时候,需要知道从哪个jndi tree上去找connection
factory, 去找destination。
read-timeout-seconds
:ejb
container调用ejbLoad()更新readonly bean数据的时间间隔,默认为600,设为0,表示readonly
bean只有被载入cache的时候才会调用ejbLoad()。如果运行期间,bean一直没有从cache中被remove,则该bean不做任何更新。
remote-client-timeout:指定rmi客户端在等待请求返回的timeout时间,即如果指定时间内,ejb没有执行完成,客户端将不再继续等待。使用这个参数需要很小心,当客户端线程不再等待的时候,server的请求并没有随之取消,它将会继续执行下去,直到完成或失败。但对于客户端而言,他并不知道后台的结果。事务一致性无法保证,需要客户端自己在使用该参数时处理事务一致性的问题。
remove-as-principal-name:类似于create-as-principal
name。
replication-type:InMomory | None,指定stateful session
bean的session是否要在cluster范围内复制,以提供fail over。
res-env-ref-name &
res-env-ref-name:指定该ejb对其他resource的引用信息,这些resource需要在ejb-jar.xml中已经定义。
role-name:
run-as-principal-name:
run-as-role-assignment:
security-permission:
security-permission-spec:
security-role-assignment:
session-timeout-seconds:指定ejb
container何时会将passivated的数据从disk上删除。比如session-timeout-seconds为600,那么在该session
bean passivated到disk后,600秒内没有被activate,它将被ejb
container从disk上删除。如果session-timeout-seconds没有指定,那么ejb
container会依据idle-timeout-seconds执行删除工作。
stateless-bean-is-clusterable:这个和home-is-clusterable类似,说明bean
object的方法调用是否能在server出现故障的时候fail
over。
stateless-bean-load-algorithm:这个和home-load-algorithm类似。以round-robin-affinity为例,home在创建bean
object的时候,bean object是round-robin在不同server上的,而某个特定bean上的business object
invocation是affinity在对应server上的。
stateless-bean-methods-are-idempotent:
trans-timeout-seconds:
transport-requirements:
use-serverside-stubs
:
太晚了,有几个没有完成的,周一补上。不过常用的除了trans-timeout-seconds应该全了。呼呼去喽!
发表评论
-
collectd
2011-08-03 14:27 2298collectd是一个守护(daemon)进程,用来收集系 ... -
HP ASR(Automatic Server Recovery)机制
2011-04-15 14:24 3573ASR(Automatic Server Re ... -
LINUX下用HP的IML工具查看服务器的日志信息
2011-04-14 16:40 4928LINUX下用HP的IML工具查看 ... -
LINUX做服务器的无盘系统
2011-01-26 18:19 1938客户端是支持PXE方式启 ... -
简易搭建一个私有云平台
2010-11-17 18:30 3241众说周知Amazon EC2是一个公共云的计算平台,属于Iaa ... -
[HA]利于heartbeat构建Oracle高可用
2010-09-17 12:41 479910月 24th, 2008 @ Kevin.yuan ... -
服务部署--IP SAN潜在的关键应用
2010-08-26 09:38 2126IP SAN可以说是近几年来存储领域的关键技术之一, ... -
通过HAProxy构建开源负载均衡架构平台
2010-08-09 00:07 50611. 目的 通过此作业指导书,知道如何使用ubu ... -
MySQL负载均衡
2010-08-08 23:39 47391. 添加监控MySQL状态的端口 # vi /etc/se ... -
Ha-proxy 学习
2010-08-08 23:08 8991什么是ha-proxy ... -
SQL Server 各版本的区别
2010-08-08 17:49 4082SQL Server 2005 Enterprise Ed ... -
Oracle数据库11g版本介绍
2010-08-08 17:44 3493无论您是独立开发者、中小企业还是大型企业,这些世界一 ... -
tpmC简单计算法
2010-07-29 18:59 17991计算原则: 以单台服务器性能进行计算,即确保单台服务器工作的时 ... -
KVM遥控服务器群
2010-07-07 15:54 2169众所周知,所谓KVM,就是键盘(Keyboard)、显示器 ... -
数据存储配置参考
2010-07-02 10:07 1806型号 配 置 数量 ... -
More Numbers (OpenDS and a hint at ApacheDS)
2010-04-29 23:45 2503Some more numbers have come in. ... -
利用Copssh在windows下搭建ssh服务
2010-03-09 01:04 13447现在远程维护基本上用ssh连接,linux系 ... -
Taking a load off: Load balancing with balance
2010-03-05 16:00 1804A server is limited in how man ... -
Software Based Load Balancers
2010-03-05 15:57 1856keyword:Load Balance ref: http ... -
SAN,NAS,DAS及其架构之间区别
2010-02-26 14:11 1735随着计算机技术的发展 ...
相关推荐
《深入解析"agent-ejb-2.1.6.jar.zip"——Java企业级应用的关键组件》 在Java世界中,EJB(Enterprise JavaBeans)是用于构建可复用的、安全的、分布式的服务器端应用程序的重要组件。"agent-ejb-2.1.6.jar.zip"是...
2. **配置**:在应用服务器的资源适配器配置文件(如WebLogic的`weblogic-ejb-jar.xml`或JBoss的`jboss-service.xml`)中,添加ActiveMQ RA的配置,包括连接工厂、目的地等。 3. **编程接口**:通过JCA,Java EE...
- **部署描述符(.xml)**:如`ejb-jar.xml`或`META-INF/ejb-jar.xml`,定义了EJB组件的元数据,包括Bean的类型、接口、生命周期方法等。 - **服务器配置文件**:可能包含特定应用服务器(如WebLogic、GlassFish或...
2. `APP-INF`目录:这个目录在WebLogic中通常用于放置自定义的配置文件或库,例如WebLogic特定的部署配置文件weblogic-ejb-jar.xml或weblogic-application.xml。这些文件可以覆盖ejb-jar.xml中的一些配置,或者添加...
开发者需要在容器的配置文件(如`weblogic-ejb-jar.xml`或`glassfish-resources.xml`)中声明数据源,并设置其属性。 7. **JNDI名称**:数据源通常会注册到Java Naming and Directory Interface (JNDI) 名称空间中...
《ActiveMQ RA 5.4.2:连接企业级消息传递与JAR包解析》 在IT领域,尤其是在Java应用程序的开发中,ActiveMQ扮演着重要的角色。它是一款开源的消息代理,遵循Apache软件基金会的许可证,是Apache ActiveMQ项目的一...
在实际使用中,ActiveMQ RA 3.2.1.jar的集成过程可能涉及配置应用服务器的资源适配器部分,比如在web.xml或ejb-jar.xml中添加适配器的配置信息。此外,开发者还需要理解JMS(Java Message Service)的概念,以正确地...
- `weblogic-ejb-jar.xml`:指定EJB的JNDI名称。 - `weblogic-rdbms-ejb.xml`:定义O/R映射规则。 #### 六、EJB开发工具 1. **JBuider**:提供集成开发环境。 2. **Eclipse**:支持源代码注释驱动的开发方式。 3....
在ejb-jar.xml和weblogic-ejb-jar.xml这两个配置文件中,我们可以找到与MDB和XA事务相关的设置。ejb-jar.xml是标准的EJB配置文件,用于定义EJB组件的元数据,包括MDB的配置。例如,可以在这里声明MDB的接口、实现类...
同时,也要在weblogic-ejb-jar.xml中进行WebLogic特定的配置,如资源引用、持久化配置等。 5. 打包EJB:将EJB项目打包成一个ejb-jar文件,通常放在一个EAR(Enterprise Archive)文件中,以便于部署到WebLogic ...
- 部署描述符(ejb-jar.xml或META-INF/ejb-jar.xml)中定义了MDB的相关配置,包括JMS目的地、资源适配器等。 4. **源代码结构**: - `codefans.net`可能是指包含源代码的目录或网站。在这个压缩包中,可能包含...
jar cvf myString.jar myStri*.* -C META-INF weblogic-ejb-jar.xml ejb-jar.xml ``` 这里需要注意的是命令前后的空格和命令的顺序。 #### 四、生成代理类 使用WebLogic提供的`ejbc`工具生成EJB的代理类。在...
- EJB部署涉及编写EJB类、接口、部署描述符(ejb-jar.xml和weblogic-ejb-jar.xml),并将它们打包成ejb-jar文件。 - 使用WebLogic的WLST(WebLogic Scripting Tool)或Admin Console进行部署,配置服务器、集群、...
- `ejb-jar.xml` 和 `weblogic-ejb-jar.xml` 文件定义Bean的元数据,包括安全、事务和部署信息。 5. **EJBDemo.jar 和 EJBDemoClient**: - `EJBDemo.jar` 可能包含了EJB3的实现,包括Bean类和接口,以及必要的...
WebLogic Server是Oracle公司的一款企业级Java应用服务器,它提供了全面的Java EE(Enterprise Edition)支持,包括Servlet、JSP、EJB等,以及对Web服务的支持。本资料包“day2013-0110-webLogic配置和集群(赵强)....
7. ** ejb-jar.xml 和 weblogic-ejb-jar.xml** - `ejb-jar.xml`是EJB的标准部署描述符,定义了Bean的配置信息。 - `weblogic-ejb-jar.xml`是WebLogic Server特定的扩展,用于配置特定服务器的特性。 8. **持久性*...
1. 调整线程池大小:通过修改`server.xml`中的`Connector`元素来调整最大线程数。 2. JVM内存设置:通过`setenv.sh`或`setenv.bat`设置JVM启动参数,优化内存分配。 3. 日志级别:根据需求调整日志级别以减少资源...
"ejb-jar.xml"和"weblogic-ejb-jar.xml"是部署描述符文件,用于配置和定制EJB的行为。 了解并熟练掌握EJB封装对于开发企业级Java应用至关重要,它可以帮助我们构建稳定、高效且易于维护的系统。
对于WebLogic Server,`weblogic-ejb-jar.xml`提供了特定于该服务器的配置选项。虽然在很多情况下不再需要这个文件,但如果需要使用WebLogic特有的设置,则仍然需要它。此外,`mappedName`注解属性可以用来代替`...