JBoss EJB 開發注意事項整理(EJB2.0)

02:33下午 十一月 28, 2008 in category Java by secretguest0824

一、如果要使用Remote Call:
要設定這幾個檔:
1.$JBOSS_HOME$\server\default\conf\jboss-service.xml
把CallByValue改成true

<mbean code="org.jboss.naming.NamingService" 
    name="jboss:service=Naming" xmbean-dd="resource:xmdesc/NamingService-
    xmbean.xml">

  <attribute name="CallByValue">true</attribute>

2.$JBOSS_HOME$\server\default\deploy\ear-deployer.xml
將Isolated和CallByValue改為true

 <mbean code="org.jboss.deployment.EARDeployer" name="jboss.j2ee:service=EARDeployer">

  <attribute name="Isolated">true</attribute> 

  <attribute name="CallByValue">true</attribute>

二、EJB Local call做法
1.在EJB的專案設定jboss.xml:
<?xml version="1.0" encoding="UTF-8"?>
<jboss>
    <enterprise-beans>
        <session>
            <ejb-name>XXEjb1Bean</ejb-name>
            <jndi-name>XXEjb1Bean</jndi-name>
            <local-jndi-name>XXEjb1BeanLocal</local-jndi-name>
            <method-attributes></method-attributes>
        </session>
        <assembly-descriptor></assembly-descriptor>
        <resource-managers></resource-managers>
    </enterprise-beans>
</jboss>
以上這段最主要是要設定local-jndi-name,如果沒有設定的話,local-jndi-name會變成XXEjb1Bean@亂數序號,而造成無法lookup到jndi
,這本來是IDE tool要能有介面設定的,但NetBeans對jboss的支援沒有強到這樣,所以要手工設.
 
2.前端的程式的call法:
Context ctx = new InitialContext();
XXEjb1LocalHome home = (XXEjb1LocalHome)ctx.lookup("XXEjb1BeanLocal");
XXEjb1Local local;
local = home.create();
local.test();
 
3.先測測看,如果出現這樣的訊息:
javax.ejb.EJBException: Invalid invocation, check your deployment packaging, method=public abstract com.wanhai.ejb.XXEjb1Local com.wanhai.ejb.XXEjb1LocalHome.create() throws javax.ejb.CreateException
 
那就把$JBOSS_HOME$\server\default\deploy\jboss-web.deployer\META-INF\jboss-service.xml的這一行的Value改成true即可解決:
<attribute name="Java2ClassLoadingCompliance">true</attribute>


迴響[0]

迴響:

發表迴響:
  • HTML 語法: 關閉