我尝试在我的应用程序客户端中注入无状态EJB
,然后出现以下错误
SEVERE:准备应用程序时出现异常:无法加载EJB模块。 DeploymentContext不包含任何EJB。检查存档以确保正确打包C:\ glassfish3 \ glassfish \ domains \ domain1 \ applications \ EJB。
如果使用EJB组件注释来定义EJB,并且还使用了ejb或Web部署描述符,请确保部署描述符引用Java EE 5或更高版本模式,并且metadata-complete属性为未设置为true,因此可以按预期处理组件注释
我的客户是这样定义的:
@EJB
private static Sless sless;
public static void main(String[] args) {
System.out.println("Sless says: " + sless.hello());
}
类Sless
是我的界面,因此定义:
@Remote
public interface Sless {
public String hello();
}
我还有一个实现Sless
@Stateless
public class SlessBean implements Sless{
@Override
public String hello() {
return "hello, world!\n";
}
}
任何有关问题来自哪里的帮助都将不胜感激。
答案 0 :(得分:4)
1) Standalone clients
或non-managed POJOs
(不由容器维护的POJO)不支持注释注入。因此@EJB
无效。
2)您必须从独立客户端执行手动 JNDI look up
。
您需要什么?
1) EJB 扩展Remote
接口。由于Local
界面未向{strong> 跨应用程序 或 远程 调用公开EJB
。
2)独立客户端中的依赖jar
个文件。 即: ORB Jar
3)您需要知道服务器上的RMI/IIOP
端口。
4)如果Standalone client
和Server
使用不同的 JDK / JRE实施,您还必须小心。 对于ex : 1使用SUN JDK
,其他使用IBM JDK
。
按照此操作从EJB
>>连接到Glassfish上的Standalone client
https://glassfish.java.net/javaee5/ejb/EJB_FAQ.html#StandaloneRemoteEJB