关于客户端容器!

我看到资料说J2EE 的部署过程会安装 J2EE 应用构件到以下类型的 J2EE 容器中。

1. 企业构件(EJB)容器,它管理一个 J2EE 应用的所有企业构件的执行,企业构件(EJB)和它们的容器运行在 J2EE 服务器上;

2. Web 容器管理着一个 J2EE 应用中的所有 JSP 页面和小服务程序(servlet)构件的运行,Web 构件及其容器运行在 J2EE 服务器上。

3. 应用客户端容器管理着一个 J2EE 应用的所有应用客户端构件的运行,应用客户端及其容器运行在客户机器上;

4. 小应用程序(applet)容器是一个网络浏览器和 Java 插件,它们一起运行于客户机器上。

这里提到的客户端容器是运行在客户机器上,但是我查到其它有的地方又说客户端容器是运行在j2ee服务器上的,不知道哪个说的是对的?如果是运行j2ee服务上,客户端容器就是由j2ee服务器提供?如果是运行在客户机器上,那么这个客户端容器是怎么来的呢?是由程序开发者来创建的,还是通过发布工具对每台客户机器都进行发布,反正我就是不清楚它是怎么生成并安装在客户机上的,有的资料说客户端容器就是JVM,但有的又说与JVM无关,但也没有说清楚是怎么来的。如果是做gui的java应用,客户机器的工作环境需要怎样配置呢?

另外,企业应用程序分为(独立的企业应用)Stand alone Client 和(基于应用服务器的企业应用)J2ee application Client.客户端容器应该是对于J2ee application client来说的是吧?


Applet是运行在Client 端的。
客户端容器是由java插件提供的。

我看到有的资料上面提到有异地EJB客户程序的说法――异地J2EE兼容服务器或容器上的EJB直接调用J2EE环境下的EJB,不同的J2EE环境下的EJB可以彼此互相调用。例如,一家公司以及合作伙伴公司决定启动一个统一的中间件平台,如大家一致同意使用J2EE平台,同时商定允许各家J2EE环境下的业务逻辑组件实现互访。J2ee application Client就是异地EJB客户程序。
那么客户端容器是不是对于J2ee application client来说的呢?客户端容器指的就是异地j2ee服务器上的EJB容器吗?

你说的java插件具体是指哪些呢?

Java 插件 1.2 是运行 Java 2 applet 的缺省插件,但并不是运行所有 Java 1.1 applet 的缺省插件。若需要 Java 插件 1.1,可从 http://www.sun.com/solaris/netscape下载。

若选择在一个系统上既安装 Java 插件 1.1,又安装 Java 插件 1.2,则必须遵循关于如何安装 Java 插件 1.1 的提示,并相应地配置环境。

这个过程在"Solaris Java 插件用户指南"的"安装 Java 插件"一节中有摘要叙述,该用户指南可从 http://www.sun.com/solaris/netscape/jpis/usersguide_java_plugin.html 获得。

我不是要applet的那些插件啊,关于swing的那些包,我可以打包引入就是了,而且你说的关于applet的插件应该指的是applet容器,那和客户端容器应该是不同的,我是想知道:
如果在客户端应用部分调用EJB,例如

Hashtable ht = new Hashtable();
ht.putContext.INITIAL_CONTEXT_FACTORY,"weblogic.jndi.WLInitialContextFactory");
ht.put(Context.PROVIDER_URL,"t3://192.168.0.50:7001");
InitialContext ic = new InitialContext(ht);
//1. Object obj = ic.lookup("java:comp/env/ejb/RouteFacade");
//2. Object obj = ic.lookup("RouteFacade");
如果按照方式1,需要在application-client.xml加入EJB的引用参考,按照方式2,就不需要,带有application-client.xml文件的client.jar只发布到j2ee服务器就可以了吗,在客户机器不需要有客户端容器来读它吗?

thanks,那篇文章前几天就看到,也试过了的,但是如果在类里面有package的话,就运行不了,bean是放在\com\ejb\bean目录下的

package com.ejb.bean; //

import javax.ejb.*;
import com.ejb.inf.*;
import javax.naming.*;
import java.util.Hashtable;

public class RouteFacadeBean implements SessionBean {
....

另外我看了runclient.bat,感觉在客户机器上也要安装j2ee服务的,(它的那个例子客户和服务器都是在一台机器上,实际情况肯定不会是那样)

现在我在用weblogic试
我是在application-client.xml里面加入了关于ejb引用的描述的。有了一个appClient.jar文件了,这个jar文件里面包括了客户应用所需要的ejb远程接口类以及客户程序,还有application-client.xml、MANIFEST.MF,MANIFEST.MF里面定义了main class。然后在jbuilder里面建了一个ear,设置了ejb模块(ejb.jar)和app client模块(appClient.jar),编译成功了,可是deploy的时候报这样的错误:
Unable to activate application, app, from source, e:\bea\user_projects\mydomain\.\myserver\upload\app\app.ear. Reason: Unable to create mbean Name: appClient.jar Type: null Exception: weblogic.management.MBeanCreationException: - with nested exception:

[javax.management.MalformedObjectNameException: type cannot be null]