0

我正在使用 JBoss 6 和 Eclipse 下的 JEE5 项目。目前,本地业务接口有多个,远程业务接口只有一个。该项目分为模块,以便接口与其实现分开,我正在尝试从这样的 POJO 进行远程调用

public static void main(final String[] args) throws Throwable {
    final SomethingBusinessRemote remote =  (SomethingBusinessRemote) getInitialContext().lookup("java:global/com/something/SomethingBusiness/remote");
    System.out.println(remote.getById(102));
}

public static Context getInitialContext() throws NamingException{
    final Hashtable hashtable = new Hashtable();
    hashtable.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
    hashtable.put(Context.PROVIDER_URL, "localhost:1099");
    return new InitialContext(hashtable);
}

如果我将项目依赖项添加到实现模块,我会得到以下结果(如预期的那样):

Something[id=102]

但是,如果该依赖项不在客户端的库中,我会得到以下堆栈跟踪:

Exception in thread "main" java.lang.reflect.UndeclaredThrowableException
    at $Proxy3.getById(Unknown Source)
    at Teste.main(Teste.java:14)
Caused by: java.lang.ClassNotFoundException: com.something.SomethingHibernate
    at org.jboss.remoting.serialization.ClassLoaderUtility.loadClass(ClassLoaderUtility.java:103)
    at org.jboss.remoting.loading.RemotingClassLoader.loadClass(RemotingClassLoader.java:94)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:247)

我记得我设法让 JBoss 5 将编组结果与实现一起发送,但我无法让它与 JBoss 6 一起使用。

我尝试在 /deploy中更改ejb3-connectors-jboss-beans.xml并将loaderport=3873添加到getStringBinding方法配置中,但它根本没有帮助我。所以,问题是:

如何配置 JBoss 以向我发送必要的实现,以便解组不会引发异常,并且我不需要客户端直接访问实现模块,只需访问接口模块?

谢谢你们!

4

0 回答 0