EJB 3.1问题

时间:2014-07-10 13:23:13

标签: java jboss ejb

我尝试在jboss7服务器上部署jboss5 bean项目包。另一个开发人员已经对代码可以在jboss7上进行了一些更改,比如将jboss-deployment-structure.xml放到项目中。

我创建了两个bean,一个在项目A(BeanA)中,另一个在项目B(BeanB)中。 BeanA必须查找BeanB。我总是得到"没有找到类型为' de.foo.soa.foobar.al.BeanB'的接口的EJB。用于绑定de.foo.soa.foobar.ba.ProjectB / BeanB。

Bean B:

    import javax.ejb.Stateless;
    import javax.ejb.LocalBean;

    @Stateless
    @LocalBean
    public class NumSrvLocalBean {

        public String testNumSrv() {
            return "numsrv works";
        }
    }

Bean A:

@EJB private NumSrvLocalBean numSrvLocalBean;
private String numSrvLocalBean_path = "java:module/NumSrvLocalBean!de.foo.soa.foobar.al.NumSrvLocalBean";
ctx = new InitialContext();
numSrvLocalBean = (NumSrvLocalBean) ctx.lookup(numSrvLocalBean_path);

我还在jboss-deployment-structure.xml中添加了正确的依赖项:

    <module name="deployment.ProjectB.jar" export="true"/>

所以,对于我的理解,evertything是好的,但我总是得到这个例外。我创建了自己的项目,让我们称之为项目X.在那里我可以从所有其他项目中查找我想要的任何Bean(大约15个)。我不能在项目A中注入项目A之外的任何bean。但我可以在项目中注入bean。所以必须有一些东西阻止项目内的bean。

我在项目A中得到了这些文件:

  • 的jboss.xml
  • 的JBoss部署-structure.xml
  • MANIFEST.MF(标准,未填写)
  • 的persistence.xml
  • seam.properties
  • ProjectA.properties(包含wsdlUrl,因为此项目也配置为XML-RPC项目)

我期待你的四个想法,

问候。

1 个答案:

答案 0 :(得分:0)

我通过使用EJB解决了这个问题(mappedName =&#34; java:global /....")。 我已经尝试过EJB(mappedName = className.JNDI_NAME),但这并没有用。我们在JBoss 5中使用了Interfaces,我们在其中定义了JNDI名称,如

@Local
public interface ClassNameLocal extends ClassNameInterface {

    /** Name im JNDI (Java Naming and Directory Interface) */
    public final static String JNDI_NAME = "foo/bar/and/so/on/ClassName/local";

}

这似乎不再起作用了。我需要使用完整的路径。