Topic: j2ee应用程序客户端怎样在远程与服务器通信?

  Print this page

1.j2ee应用程序客户端怎样在远程与服务器通信? Copy to clipboard
Posted by: sharinglife
Posted on: 2003-05-16 10:13

我用的j2ee服务器是sun公司的j2sdkee1.3,完全为了学习之用。在服务器端,部署了一个EJB,而且用了一个客户端应用程序,用来访问Ejb,名字为countClient.jar,其jar包中的主类名是CountClient,如果在同一台机器上运行,使用命令
runclient.bat -client countClient.jar -name CountClient 是没有问题的,我想知道的是如果客户端应用程序与j2ee服务器不在同一台机器上,该怎么进行访问呢?是否要通过服务器的ip:port,格式又是怎么样的呢?在客户端除了需要这个客户端应用程序之外,还需要哪些辅助模块呢?
请斑竹和对这个了解的朋友不吝赐教,小弟多谢多谢:)

2.Re:j2ee应用程序客户端怎样在远程与服务器通信? [Re: sharinglife] Copy to clipboard
Posted by: lihongtao
Posted on: 2003-05-16 10:40

J2ee的Client可以是Java application\applet,但是应用最多的还是浏览器。访问j2ee组件只能通过jndi:

Properties props = System.getProperties();
//获得Context
Context ctx = new InitialContext(props);
//从jndi中查找CountHome
Object obj = ctx.lookup("CountHome");
//获得CountHome引用
CountHome countHome = (CountHome)javax.rmi.PortableRemoteObject.narrow(obj, CountHome.class);
//获得Coun引用
Count count = countHome.create();

3.Re:j2ee应用程序客户端怎样在远程与服务器通信? [Re: sharinglife] Copy to clipboard
Posted by: sharinglife
Posted on: 2003-05-16 11:19

首先感谢这位老兄的热心回答,我的CountClient.java文件开头是这样的:
public class CountClient {
public static void main(String[] args) {
try {
    InitialContext ctx = new InitialContext();
CountHome home = (CountHome)
     javax.rmi.PortableRemoteObject.narrow(
       ctx.lookup("CountHome"), CountHome.class);
..................................................
      
我不知道你写的这句Properties props = System.getProperties();
//获得Context,
怎样能获得远程服务器的上下文,
我要做的工作是从远程利用客户端应用程序访问j2ee服务器中的Ejb组建。

4.Re:j2ee应用程序客户端怎样在远程与服务器通信? [Re: sharinglife] Copy to clipboard
Posted by: jeez
Posted on: 2003-05-16 13:42

运行环境中需要有jndi的环境变量,你可以将它们写入一个文件,如jndi.properties。

内容:
//主机ip和端口号
java.naming.provider.url=rmi://localhost:1099/JndiServer
//factory须替换成你的jndi服务提供商的相应类名
java.naming.factory.initial=org.exolab.jms.jndi.rmi.RmiJndiInitialContextFactory

以下是初始化JndiProperties的程序:

private void initJndiProps() {
//init jndi properties
URL jndiPropUrl = new File("/config/jndiProperties").toURL();
if (jndiPropUrl == null) {
return;
}

//load props from file
Properties props = null;
try {
InputStream is = jndiPropUrl.openStream();
props = new Properties();
props.load(is);
}
catch (IOException ex) {
}

//log props into the log
Enumeration keys = props.propertyNames();
while (keys.hasMoreElements()) {
String key = (String) keys.nextElement();
String value = props.getProperty(key);
System.setProperty(key, value);
}
}

5.Re:j2ee应用程序客户端怎样在远程与服务器通信? [Re: sharinglife] Copy to clipboard
Posted by: sharinglife
Posted on: 2003-05-16 20:24

多谢了,兄台,虽然看得不太明白^-^,下来慢慢研究!


   Powered by Jute Powerful Forum® Version Jute 1.5.6 Ent
Copyright © 2002-2021 Cjsdn Team. All Righits Reserved. 闽ICP备05005120号-1
客服电话 18559299278    客服信箱 714923@qq.com    客服QQ 714923