JBOSS系列 -EJB遠程調用-客戶端的配置


 EJB訪問方式分為遠程客戶端訪問、本地客戶端訪問和WebService客戶端。

        所謂的EJB的遠程調用是說客戶端與服務端的EJB對象不在同一個JVM進程中。

        本地客戶端是說客戶端與服務端的EJB對象在同一個JVM進程中。

         WebService客戶端可以訪問無狀態會話Bean的接口,只有在業務邏輯方法被標識為@WebMethod的時候,webService客戶端才可以訪問到。

 

遠程調用

         在沒有遠程調用的時候,我們需要用到別人的數據了,就直接把別人的接口和實現都拿過來了,接着打到自己的包中,這樣做一方面來說是造成了代碼的冗余,自己的包會很大,另一方面這樣也不是遠程調用。

        接下來我們改進,改成遠程調用,直接調用別人的接口就可以操作了。這樣的好處是針對接口編程,結構清晰,很靈活。

 

客戶端配置:

 

1、當然需要調用的EJBBEAN必須是遠程的:

 

@Stateless(name="ClassEao") 
@Remote(ClassEao.class) 
@TransactionManagement(TransactionManagementType.CONTAINER) 
@TransactionAttribute(TransactionAttributeType.REQUIRED) 
public class ClassEaoImpl extends ExamBase<Class> implements ClassEao { 
   
       
   
} 

  

 

我們在EAO的實現上加遠程的注解。

 

2、我們注入Bean的時候需要用遠程的JNDI,在自己的webspring-mvc.xml里面配置,即

 
<jee:jndi-lookup id="SchoolTeachingBean"  
        jndi-name="ejb:itoo-basic-schoolteaching-ear/itoo-basic-schoolteaching-core-0.0.1-SNAPSHOT/SchoolTeachingBeanImpl!com.tgb.itoo.basic.service.SchoolTeachingBean"  
        environment-ref="evn">  
    </jee:jndi-lookup>  

  

注意上面的jndi-name,我們的項目是打成了一個ear包,並且去掉了ear的版本號:

 
<build>  
<finalName>${project.artifactId}</finalName>  
</build> 

  

同時在applicationContext-common.xml里面配置如下:

 
<util:properties id="evn"  
        location="classpath:config/jboss-ejb-client.properties"></util:properties>  

  

這樣的目的是通過evn找到相應的JBOSS的配置,也就是需要遠程調用的JBOSSip,端口號,用戶名和密碼。

 

3、在自己的Web層添加配置文件jboss-ejb-client.properties

 
endpoint.name=client-endpoint  
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false  
org.jboss.ejb.client.scoped.context=true  
jboss.naming.client.ejb.context=true  
Context.URL_PKG_PREFIXES=org.jboss.ejb.client.naming  
javax.naming.Context.INITIAL_CONTEXT_FACTORY=org.jboss.naming.remote.client.InitialContextFactory  
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false  
remote.connectionprovider.create.options.org.xnio.Options.SSL_STARTTLS=false  
jboss.naming.client.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false  
remote.connections=one  
remote.connection.one.host=192.*.*.*  
remote.connection.one.port=4447  
remote.connection.one.username=adminks  
remote.connection.one.password=!adminks123

  

       主要是配置IP和端口號以及需要遠程調用的JBOSS的賬戶名和密碼,同時我們還可以在JBOSS中配置多個遠程調用的接口。

 

4、最后一步,在自己的ear包里面加入jboss-deployment-structure.xml配置如下:

 
<?xml version="1.0" encoding="UTF-8"?>  
<jboss-deployment-structure>  
        <sub-deployment name="itoo-assess-studentassess-web-0.0.1-SNAPSHOT.war">  
        <dependencies>  
            <module name="org.jboss.xnio" />  
        </dependencies>  
    </sub-deployment>  
</jboss-deployment-structure> 

  

          因為現在用的JBOSS版本是eap 6.2 相比較以前的版本加入了模塊的概念(用到才被加載),加入以上配置是為了找到war包里面jndi的配置。

 

總結:

        上面主要介紹了EJB遠程調用的客戶端的配置,主要是因為現在JBOSS提升版本后,突出的一點是JBOSS的模塊化,也是因為這個又愛又恨的模塊化出了一系列的問題,解決了一系列的問題。下篇博客繼續說遠程調用JBOSS的配置。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM