远程application client 怎样访问EJB

02-11-18 swfdoudou
这段时间看资料时发现讲到application client 访问EJB时都是通过以下方式来访问的.
runclient -client ConverterApp.ear -name ConverterClient
-textauth

其中:ConverterApp.ear 为一个Enterprise Application.
ConverterClient 为Application client。它在发布时自动加到了ConverterApp.ear中。
示例程序所用J2EE服务器为J2EE SDK.

这在本机(J2EE SDK服务器) 上没有问题, 可在局域网中另一台机器上执行时则出错。
请问:远程application client 能访问EJB吗? 应该怎样编写client才行?

banq
2002-11-18 22:06
当然可以,让client能够寻找到jndi.property文件就可以。

iceant
2002-11-18 22:58
你需要补充的知识点:
JNDI Specification.
EJB Specification.

sam_java
2002-11-19 04:05
One way of doing this is by passing a set of environment variables to the InitialContext constructor. For example:


import javax.naming.Context; import javax.naming.InitialContext; .... Properties p = new Properties(); p.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory); p.put(Context.PROVIDER_URL, url); p.put(Context.SECURITY_PRINCIPAL, username); p.put(Context.SECURITY_CREDENTIALS, password); InitialContext ic = new InitialContext(p);

swfdoudou
2002-11-19 09:14
各位大大,我试了一下你们的方法,好象还是不行。
查看资料发现:runclient 是j2ee自带的一个.bat文件。在runclient 中它会自动检测JAVA_Home , J2EE_HOME等环境变量,所以如果将它与Application Client一同发布到另一台机器上运行时,也不能访问EJB(位于J2EE Server).

请教:
我能直接越过runclient ,而让自己的Application直接与J2EE JNDI server连接,从而取得EJB的RemoteHome对象吗?就象调用RMI时用PerfectTimeI)Naming.lookup("//colossus:2005/PerfectTime");直接取得造型到远程接口。
如果能的话,请问具体该怎么做?


非常感谢!


J2EE初学者






swfdoudou
2002-11-19 10:43
请问通过以下方式生成InitialContext:
Properties p = new Properties();
p.put(Context.INITIAL_CONTEXT_FACTORY, contextFactory);
p.put(Context.PROVIDER_URL, url);
p.put(Context.SECURITY_PRINCIPAL, username);
p.put(Context.SECURITY_CREDENTIALS, password);
InitialContext ic = new InitialContext(p);
从而使Application Client能远程访问Ejb时,以下属性在J2EE SDK和JBoss中分别怎么设置:
Context.INITIAL_CONTEXT_FACTORY
Context.PROVIDER_URL


(我查JNDI tutorial时,没有发现在J2EE SDK和JBoss中怎么设置上面两种属性)

非常感谢!



猜你喜欢