首先这是我在 StackOverflow 上的第一个问题,我是德国一家公司的实习生,所以我的英语有点破,我的知识可能有限。
我尝试远程连接到 Jboss 6.1.0 eap。我使用 Eclipse 作为 EJB 和 EAR 的 IDE,但我运行 Jboss 表单 cmd
我的 ejb3 定义如下所示:
package de.jack;
import javax.ejb.Remote;
@Remote
public interface TestServiceRemote {
public void sayRemote();
}
package de.jack;
import javax.ejb.Stateless;
/**
* Session Bean implementation class TestService
*/
@Stateless
public class TestService implements TestServiceRemote {
public TestService() { }
public void sayRemote() {
System.out.println("\n\nHello");
}
}
生成 .ear 文件后,我将它们部署在 JBoss AS 中,一切正常,我可以在浏览器中的 localhost:9990 下查看它们并检查它们是否已部署
现在到我失败的部分 - 客户:
public static void main(String argv[]){
Properties props = new Properties();
props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
props.put(Context.PROVIDER_URL, "remote://localhost:4447");
props.put(Context.SECURITY_PRINCIPAL, "jack");
props.put(Context.SECURITY_CREDENTIALS, "katze");
props.put("jboss.naming.client.ejb.context", true);
// create a context passing these properties
InitialContext context;
Object test = null;
try {
context = new InitialContext(props);
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
try {
test =
context.lookup("ConnectorBean/TestService!de.jack.TestServiceRemote");
} catch (NamingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return;
}
运行时出现异常:
org.jboss.naming.remote.protocol.NamingIOException: Failed to lookup [Root exception is java.io.IOException: java.lang.ClassNotFoundException: de.jack.TestServiceRemote]
at org.jboss.naming.remote.client.ClientUtil.namingException(ClientUtil.java:49)
at org.jboss.naming.remote.protocol.v1.Protocol$1.execute(Protocol.java:104)
at org.jboss.naming.remote.protocol.v1.RemoteNamingStoreV1.lookup(RemoteNamingStoreV1.java:95)
at org.jboss.naming.remote.client.HaRemoteNamingStore$1.operation(HaRemoteNamingStore.java:245)
...
我不确定我到底做错了什么,一个原因可能是我在机器上没有管理员权限,或者我混淆了客户端的属性
对不起我的英语不好,我非常感谢任何帮助!