我是EJB3的新手,在访问在耳朵文件中部署为ejb模块的@Remote @Stateless bean时缺少一些东西。我想从soup.ear访问lima.ear中的远程bean。配置一只耳朵在JBoss的另一只耳朵上调用远程ejb3
这里是我现在做的(有点略):
//deployed under lima.ear
@Remote
@Stateless
public interface LimaBean {
String sayName();
}
我想把LimaBean在汤:
//deployed in soup.ear
@Stateless
public class Soup implements SoupLocal {
@EJB
private LimaBean limaBean;
public String taste() {
return limaBean.sayName();
}
}
当我启动JBoss我得到以下错误:
java.lang.RuntimeException:无法解析容器的@EJB的全局JNDI名称Soup:引用类:com.example.LimaBean ejbLink:未被任何EJB使用
我很难找出这个ejbLink是关于什么的,如果这是正确的道路。
如果我将LimaBean作为jar文件部署在jboss中,那么一切都很好!
我跑翻过的文章,有一个被称为“在2.5.3不同罐子豆类和不同的耳朵之间的引用。”
(http://jonas.ow2.org/doc/howto/jboss2_4-to-jonas3_0/html/x111.html)部分SB_BrowseRegions的jboss.xml文件的
实施例:
<jboss>
<session>
<ejb-name>SB_BrowseRegions</ejb-name>
<ejb-ref>
<ejb-ref-name>ejb/Region</ejb-ref-name>
<jndi-name>protocol://serverName/directory/RegionHome</jndi-name>
</ejb-ref>
</session>
</jboss>
如果我碰soup.ear,JBoss的启动后则部署精细,所以我假设我需要像上面的文章说,到指定的依赖。
但即使它部署然后我得到访问远程LimaBean当错误后:
产生的原因:java.lang.IllegalArgumentException异常:无法设置com.soup.LimaBean场com.soup.Soup.limaBean到$ Proxy147 在sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:146) 在sun.reflect.UnsafeFieldAccessorImpl.throwSetIllegalArgumentException(UnsafeFieldAccessorImpl.java:150) 在sun.reflect.UnsafeObjectFieldAccessorImpl.set(UnsafeObjectFieldAccessorImpl.java:63) at java.lang.reflect.Field.set(Field.java:657) at org.jboss.injection.JndiFieldInjector.in ject(JndiFieldInjector.java:115) ... 49更多
我已经尝试了一些东西,但是,如果任何人都可以指出我在正确的方向对此,我将不胜感激。