两个jar分别开发,A.jar引用B.jar,就在A.jar里放上B的interface.

解决方案 »

  1.   

    你能具体说一下怎么弄得吗,我就是想通过引用方式(java:comp/env/...)来相互调用不同jar里的ejb,如果ejb都在同一个module也就是同一个jar里,我知道怎么在jbuilder里写引用描述,可ejb放在不同jar怎么写引用描述呢?
      

  2.   

    你在A的Project Properties中的Required Libraries中把B的Class加进来试试!
      

  3.   

    A.jar和B.jar是放在同一个project中的,是由moduleA和moduleB编译生成的,所以应该不需要"在A的Project Properties中的Required Libraries中把B的Class加进来试试!",我还试过在填写"EJB Local References"那一页里,
    不选"isLink",这样就可以填写"JNDI Name",(Name,isLink,Link,Type,LocalHome,Local,JNDI Name),我不知道这个JNDI Name应该填写什么,就随便填写了一个值,可是编译生成的ejb-jar.xml里都找不到我填写的这个值在哪里.下面是查到的资料这样说的,难道只有手工去写ejb-jar.xml才行吗?开发者也可在ejb-jar部署描述中的ejb-ref或ejb-local-ref元素里使用可选的ejb-link元素来将ejb引用连接到具体的EJB组件。ejb-link元素的值必须是被引用的EJB组件的名字,即被引用的EJB组件的部署描述元素ejb-name的值。被引用的EJB组件可以是同一个应用中,与声明引用的EJB组件相同或不同的EJB模块中的EJB组件。
    为了避免整个应用中在发生引用时所产生的EJB名称冲突,ejb-link元素的值必须遵循如下规则,即当被引用的EJB组件位于应用中的其他EJB模块,则在被引用的EJB组件的名字前必须加上被引用组件位于的EJB模块的模块路径,在被引用模块路径和被引用组件名之间使用“#”字符进行分隔。被引用模块路径是相对于当前的引用模块的路径。
    如下例:
    <enterprise-beans>
        <session>
            ...
            <ejb-name>EmployeeService</ejb-name>
            <ejb-class>com.wombat.empl.EmployeeServiceEJB</ejb-class>
            ...
            <ejb-ref>
                <ejb-ref-name>ejb/EmplRecord</ejb-ref-name>
                <ejb-ref-type>Entity</ejb-ref-type>
                <home>com.wombat.empl.EmployeeRecordHome</home>
                <remote>com.wombat.empl.EmployeeRecord</remote>
                <ejb-link>EmployeeRecord</ejb-link>
            </ejb-ref>
            ...
        </session>
        ...
        <entity>
            <ejb-name>EmployeeRecord</ejb-name>
            <home>com.wombat.empl.EmployeeRecordHome</home>
            <remote>com.wombat.empl.EmployeeRecord</remote>
            ...
        </entity>
        ...
    </enterprise-beans>
    ...
    下例是引用同一个应用中不同模块的EJB组件时,ejb-link的用法:
    <entity>
        ...
        <ejb-name>OrderEJB</ejb-name>
        <ejb-class>com.wombat.orders.OrderEJB</ejb-class>
        ...
        <ejb-ref>
            <ejb-ref-name>ejb/Product</ejb-ref-name>
            <ejb-ref-type>Entity</ejb-ref-type>
            <home>com.acme.orders.ProductHome</home>
            <remote>com.acme.orders.Product</remote>
            <ejb-link>../products/product.jar#ProductEJB</ejb-link>
        </ejb-ref>
        ...
    </entity>