答: 在J2EE标准定义了所有的EJB classes 都应该打包成
问: WebSphere AEs 和AEd 版本有什么不同的地方?
答: AEs 是 WebSphere, Advanced Edition - Single Server 版而 AEd 是WebSphere, Advanced Edition - Developer 版本。 AEs 和 AEd的代码是一样的。不同的地方是 AEs 的 license 是可以用于生产环境中,而AEd的license不能用于产品环境只能用于开发过程中使用。
问: 在WebSphere中internal/embedded HTTP server的作用是什么?
答: Internal HTTP Server 主要是出于两个方面的目的来考虑:
它使程序开发人员可以不安装外置的HTTP server来测试在WebSphere Application Server上运行的代码和应用程序。
它使得插件(plug-in )与 WebSphere应用服务器之间通过HTTP协议而不是以前的OSE来进行通讯。
内置的HTTP server 在生产环境中不应该由终端客户来直接访问,因为它相比外置的 HTTP servers来说少了很多的关于webserver
问: 在AEs中的 Admin Services 是不是运行在一个单独的JAVA虚拟机(JVM)中?
答: 不是,AEs的 Admin Services 不是运行在一个单独的JVM上. AEs 是WebSphereAdvanced-Single Server 版本。 AEs 上的 administrative server 和Application Server 是运行在同一个 Java Virtual Machine上面。
问: 我们所遵循的是什么版本的 HTTP 协议?
答: 我们通讯所遵循的是HTTP 1.1 的协议标准。
问: 在UNIX系统上的Silent Install 是不是不需要任何工具比如说 Motif 或 GUI 工具包?
答: 是的。
问: EJBDeploy和SEAppInstall是不是WebSphere 4.0的新工具?
答: EJBDeploy 是一直存在的工具。它在WebSphere4.0中新的特性是已经转变为一个命令行的工具,可以使得我们可以在命令行方式下执行这个EJB的部署工具,而以前我们只能在Visual Agefor Java 或者 Admin GUI中才能执行这个部署工具。SEAppInstall 是在 WebSphere4.0中出现的一个新工具。它是一个命令行的企业应用程序的安装工具,只在AEs和AEd版本中使用。
问: 关于EJB存储的 "where" 语句是在什么位置?
答: "Where" 语句是在Application Assembly Tool (AAT)工具中作为EJB的一个扩展方法来被配置。它们存储在EJB的扩展文件中,由AAT来配置生成。
问: 关于stateful session beans的工作负载均衡管理机制是怎么样的?
答: 在websphere 4.0中stateful session beans和在Websphere3.5的作用是一样的。Stateful session beans 能够被modeled和cloned。然而,你不能实现对这些beans的工作量管理。这是由于stateful session bean是与一个特定的客户端密切相关的。在大多数情况下,实现对这些EJBs的工作量管理会使系统运行效率降低,而不是我们所期望的提高系统性能,虽然你可能会提高跨进程访问的数目,但是实际上可能系统需要的更多的跨物理机器调用的管理。
问: 如何在另外一个应用程序服务器上指定一个远程的 EJB ?
答: 如果在另外一个应用服务器上的EJB与当前应用程序服务器是在同一个websphere管理域内,那么我们不需要采取什么特定的方法。因为在WebSphere分布式的命名空间内,无论EJB位于这个管理域的任何位置,关于这个EJB的JNDI查找都会返回它正确的home接口给管理服务器。
如果EJB是位于另一个WebSphere管理域内,那么需要做如下的操作:
在实现EJB的JNDI查找代码中,将 Context.PROVIDER_URL 设置成为如下:
Hashtable env = new Hashtable();
env.put(Context.PROVIDER_URL, "iiop://EJBHost");
Context context = new InitialContext(env);
其中 EJBHost 代表EJB驻留的主机的地址。关于 Context.PROVIDER_URL设置的缺省值是localhost。当然你也可以通过设置 Context.INITIAL_CONTEXT_FACTORY的值来选择其它的查找服务。
问: 能否提供一些关于连接池,例如stale connections等的一些信息?
答: Stale connections表示那些由于某种原因而不能再被使用的连接。这种情况经常可能发生,比如数据库服务器突然当机或者是网络遇到问题不通的情况,都会出现这种连接失效的情况。在这种情况下,连接不能再被应用程序所使用,连接池需要涮新或者是重建。对于这种情况在websphere下就已经增加了对它们的支持,在WebSphere4。0中有了进一步的提高。更多指定的数据库厂商的错误代码被增加进来表示为StaleConnectionException的异常代码。另外,当websphere抛出StaleConnectionException时,整个连接池将被破坏以进一步重建。
问: 关于JSPs的预编译是如何处理实现的?
答: 作为IBM关于JSP支持的一个重要扩展,IBM WebSphere Application Server提供一个能够实现批处理的JSP编译器。使用这种功能能够成批的编译处理你的JSP文件,使得客户端第一次处理webserver上的JSP页面时,能够得到更快的响应,以提高你的应用的运行性能。
一次性同时编译关于一个企业应用程序的所有JSP页面是一个最好的方法。批处理编译可以节约系统资源,同时通过指定服务器是否检测相关的类文件或者重新编译JSP文件可以提供关于应用程序服务器的安全性设置。除非你对应用程序服务器进行相关的配置,否则应用程序服务器将监测已经编译过的JSP文件的变化,当服务器检测到JSP页面发生变化时,它会自动的重新编译这些改变的JSP文件,同时将它们重新装载到服务器中。
使用 JSPBatchCompiler 工具。目前它在WebSphere4.0AEs可以正常工作。为了使得这个工具能够在beta版的websphere4.0AE版正常使用。可以将这个AE下的批处理文件做一个备份,将文件中的org.apache.jasper.compiler.ibmtools.BatchC 修改为
org.apache.jasper.compiler.ibmtools.JspBatchCompiler.
这个工具的使用方法为: JspBatchCompiler -enterpriseApp -webModule[-filename] [-keepgenerated]
注意在命令参数中的企业应用程序指的是已经安装在服务器上的应用程序的名字。而 web module的名字表示的是属于此企业应用程序的web module。在WebSphere4.0的InfoCenter中有关于这个命令工具的详细描述。
问:是否能够指定关于EJB的CLASSPATH?
答: 能够, 每一个EJB module中的"classpath" 都能够在Application AssemblyTool (AAT) 中被配置。
问: 能否指定应用程序级的CLASSPATH?
答: 不能。因为应用程序级的classpath 是由其包含的每个 module (EJB, Web, Client)在module 级上被指定的
问:在 AEs中,bindings信息文件存储在什么位置?在EAR文件被安装在应用程序服务器上后,绑定信息是否是储存在server-cfg.xml 文件中?
答: 在AEs中,绑定信息存储在与每一个module 和EAR相关的xml文件中。这些文件叫做ibm-type-bnd.xmi 在这里"type"指的是module的类型。例如,关于EJB的bindings 信息是存储在EJBJAR包中叫做 ibm-ejb-bnd.xmi 的xml文件中。应用程序包安装完成后,bindings信息不会位于server-cfg.xml 中。它们仍然保留在原来的xmi文件中。
问: 在WebSphere高级版中,在企业应用程序(EAR文件)安装到应用程序服务器上后,其bindings信息是不是存储在管理数据库内?如果在EAR安装过程中,bindings信息做了一定的改变,那么改变过的信息将存储在什么地方?
答:在EAR 文件安装以前,bindings信息是储存在 ibm-type-bnd.xmi 的文件中。在EAR文件安装到高级版的应用程序服务器上后,bindings信息会存放到管理数据库内。在安装过程中bindings信息做的任何改变都会存放在管理数据库内,这些变化在.xmi 文件里不会有任何显示信息。
问: 从websphere3.5到4.0的移植过程会保存在admin.config文件中用户所做的改变信息吗?
答:任何存储在WebSphere Version 3.5 的系统文件如admin.config和bootstrap.properties 文件中的信息都会保存在由 WASPreUpgrade()API所生成的备份目录中,但是它们不会移植到4.0中。任何关于这些文件的修改部分都必须手动的在4.0的相关文件里进行相应的修改。
问:移植工具如何知道哪个应用程序服务器需要移植?
答: WASPreUpgrade() API将会从WebSphere ApplicationServer管理数据库被导出一个完整的 XML文件,但是在移植过程中,只有本地节点上的应用程序才会被升级到4.0中。
问: 动态缓存Dynamic Caching是不是HTTP_POST的缓存?结果是怎么样的?
答: POST 与 GET 请求都能够被缓存。在一个servlet内, 一个 POST参数是通过HttpServletRequest.getParameter() , 方式来获得的。POST变量在 servletcache.xml文件中通过"parameter"标记来定义和表明。
问: 在WebSphere高级版本软件包中所带的SecureWay Directory是什么版本?
答:是 Secure Way Directory 3.2.6。
问: 在克隆一个应用程序服务器时,是不是最初的原始应用程序服务器必须是其中的一个克隆节点?
答: 是的。在WebSphere beta版中允许选择是否将原始的应用程序服务器作为一个克隆节点,但是在GA版中将不会有这个选项。在GA版中增加了一个功能,使得在同一个节点机器上的应用程序服务器之间可以相互拷贝和移动运行在其上的应用程序,这样就会使得我们的原始应用服务器的重建变得更加容易和方便。另外应用程序数据和管理数据的分离存储也使得原始应用服务器的重建变得更加容易。
问: 两个Web modules 能不能有相同的上下文(context)目录? (是不是在 AAT中 强制规定两个Webmodules 不能有相同的context目录?)
答: AAT不会检测两个Web modules 是否拥有相同的context目录,因为这两个modules可以分别部署到不同的WebSphere管理域或者是同一个管理域上的不同虚拟主机上。 WebSphere本身不允许拥有相同的context 目录的Web modules安装在同一个虚拟主机上。在 beta版中不会检测在同一个虚拟主机上不同Webmodules是否有相同的context目录。但是在GA版中会检测同时不允许这种情况的存在。
问: 在高级版的软件包CD中有什么东西?
答: 应用程序服务器 CD (每个平台一张CD - NT/2000, AIX, SUN, HP, andLinux)上有:
Advanced Edition 4.0 安装镜像文件( Advanced Edition 4.0, IHSv1.3.19, JDK 1.3, GSKIT 5.0, Merant's Sequelink 5.1, StarterInfoCenter/帮助文档)。
OLT /Debugger 9.1.4
J2EE Connectors Beta
Getting Started HTML
Getting Started PDF
License Information
Readme
Secure Way Directory & DB2 (每个平台一张CD -NT/AIX/SUN): Secure Way Directory 3.2.6
DB2 Enterprise Edition v7.2 CD2 (one platform per CD)
Client CD (NT/AIX/Sun)
J2EE Application Client Install
我们的CD上附带的Java Application Thin 客户端安装只有128-Bit的加密版。
Merant Server (所有的平台共用一张CD )
Q: 为什么需要指定关于EJB 和企业应用程序的安全角色?
答: 因为企业应用程序中的 EJBModule 和 WebModule可能是由不同的程序员来独立开发完成的(可能来自不同的公司),而在开发这些组件时,他们肯定会定义一些通过授权的角色。因此,模块开发人员会将这些不同的角色定义加入到相关的配置描述符(deploymentdescriptor)文件中。
然后,不同的 modules可能会装配到一个应用程序中(可能是通过另外的应用程序装配者来完成,而他不会改变这些原始模块的任何内容)我们必须保证在同一个应用程序内的不同模块所定义的角色必须是合理的,也就是不存在这些模块之间可能存在的角色定义重复的问题。所以我们在从module到应用程序级的转换中必须有"role push-up"来定义解决
同样,应用程序装配人员可能会定义一些关于整个应用程序的新的角色,这些角色的定义信息是保存在应用程序的配置描述符文件中。我们不知道那些模块可能会与这些角色相关,因此这些角色定义信息将会保存在应用程序的deploymentdescriptor文件中以供使用。
问: 请描述一下在ORB plug-in级的EJB WLM管理?
答: 我们考虑存在一个EJBClient,几个EJB 克隆和一个管理服务器的情况。
在管理服务器中保存着可用的克隆节点的列表,同时这个列表用一个epoch数字来标记。管理服务器是克隆节点的父进程,当其管理的克隆中有一个当掉时,在管理服务器里会标明。同时管理服务器会周期性的pings其管理的每个clone节点,如果在一定的时间内克隆节点没有响应(可以自己配置)那么管理服务器会认为该节点已经当机。每次当节点生效或者是失效时,管理服务器都会更新它的克隆列表同时为这个列表生成一个新的epoch数值。这个列表会被发送到每个克隆接点以及其他的远端管理服务器上。
当EJBClient为所需要的EJB做JNDI查找时,管理服务器将返回这个EJB的home接口。home接口中包括可用的EJB克隆的列表以及列表的epoch数值。当客户端调用ejbcreate, a findermethod等方法时,ORB将从列表中选择其中的一个EJB克隆,同时将请求信息和列表的epoch数值一块传送到选择的克隆上。
如果一个克隆失效了,那么下一个ejbcreate, finder, 等的请求将可能出现下面两种情况之一:
请求将路由到某一个可用的克隆接点。这个克隆节点上会有从管理服务器那里获得的新的克隆列表,同时会检测到从EJB客户端请求所带过来的epoch数值与当前正在使用的数值不匹配。这种情况下,克隆节点将接受处理这个请求,同时将从管理服务器那里获得的新的克隆列表以及其epoch值传送到EJBClient's ORB上。
请求将会被路由到已经失效的克隆节点。如果机器还正常,只是其上面的克隆节点失效,呢么连接将被拒绝,那么ORB会根据返回的信息把请求发送到其克隆列表中的下一个克隆节点上。如果整个机器已经当机,那么ORB将会等待一段时间也就是ORB的请求超时(可以自己来配置),如果超时,那么ORB将会假定这个克隆节点已经失效同时将请求路由到其克隆列表中的下一个克隆节点上。如果这个克隆是可用的,那么这个请求路由将按照第一种方式来处理。如果这个克隆也失效,那么ORB将会把请求发送给其克隆列表中的再下一个克隆节点上。如果列表中的所有节点都不可用,那么EJB客户端的ORB将会从管理服务器中请求一个新的可用克隆列表。注意:这是在EJB的JNDI查找完成后,客户端唯一会向管理服务器反馈信息的情况。
问: 关于CICS 和 MQSeries 的连接器是否可以使用J2C?
答: 在CICS 中可以使用J2C。目前在MQSeries中还不支持这个标准。
问: 是不是在WebSphere 4.0中已经没有关于OSE 远程调用的支持?
答:现在的情况是在WebSphere4.0中已经不再支持使用OSE协议。我们可以支持在同一个服务器上同时运行webshere3.5的0SE和4.0的HTTP协议。但是当你与WebSphere 4.0的应用程序服务器通信时必须使用HTTP transport。
问: WebSphere 4.0 支持Oracle's 8.1.7的 JDBC driver吗?
答: 是的,在WebSphere 4.0高级版和AEs中都支持Oracle 8.1.7。
问: WebSphere 4.0 支持 VisualAge for Java 3.5 中开发的PersistenceBuilder 对象吗?
答: WebSphere 4.0 不支持。
问: BeanCache是什么意思?
答: Bean Cache 是WebSphere 4.0 中一个关于提高性能的特性。它指的是将 bean存放在系统内存内,使得在每次使用EJB的时候不需要重新装载bean的实例。
Bean caching 选项是通过在AAT中 AAT => Entity Bean=> IBM extension =>来指定BeanCache。
Bean Cache --- Entity Beans
激活点: | 装载调用点: | |
ONCE | ACTIVATION | = Commit Option A |
ONCE | TRANSACTION | = Commit Option B |
TRANSACTION | TRANSACTION | = Commit Option C |
Bean Cache --- Stateful Session Beans
激活点: | |
ONCE | = bean一般是位于Active Cache中,直到缓冲池已满或者是超时 |
TRANSACTION | = 在交易开始/提交完成时生效或者是失效。 |
问: Session Affinity是不是主机的IP 地址?
答: SessionAffinity机制是基于指定的浏览器实例的。因此,如果你在同一个客户机上有两个浏览器,那么每个浏览器都有它自己相应的session。
问:WebSphere 4.0 是否支持Jetace?
答: 不支持。在WebSphere 4.0中, Jetace 已经被Application AssemblyTool所取代。
问: WebSphere 4.0 是否支持JPDA?
答: 是的。JTPA是JDK1.3的一部分。而我们的WebSphere 4.0支持的是JDK1。3。
问: 如果一个应用程序没有使用EJB,那么如何保证Java Class的方法的安全性?
答: 一般情况下,用户只会调用位于应用程序服务器上的Servlet, JSP, EJB 或者是静态资源文件。不会存在对于Java Class的直接调用。一般都是通过一个EJB或者是servlet来调用相应的Java class 。因此,对Javaclass 的保护可以通过对相关的EJB或者 servlet实施保护来间接实现。
问: 怎样在DB2中重建WAS数据库?
答:首先需要 Drop 存在的 WAS 数据库。 (使用db2cmd 命令行方式或者是使用DB2的控制中心。)
db2cmd
db2 drop db was
然后建立新的数据库:
db2 create dB was
db2 update dB cfg for was using applheapsz 256
将WebSphereappserverin目录下的 admin.config 文件做如下修改:
install.initial.config=true
# Create AdminServer database tables
com.ibm.ejs.sm.adminServer.createTables=true
问: 如何为CMP Entity Bean设置相应的数据库?
答: 你可以在AAT中,在entity bean操作中为 CMP entity bean设置相应的数据库,或者是设置为关于整个EJB module的缺省数据库。如果一个CMP entity bean没有指定任何相应的数据库,那么它将会使用缺省数据库。可是,如果在CMP Entity bean中指定的DataSource,那么缺省的DataSource名字将不会有任何作用,对于CMP Entity bean本身来说。注意,指定的JDBC DataSource 的JNDI名必须在管理控制台有相应的配置。
问: CCF (Common Connector Framework) 是不是会被J2C所代替?
答: 最初的CCF是由VisualAge for Java团体所开发的一项IBM的专有技术,后来IBM将这项技术贡献给了Java standards组织。J2EE Connector规范(J2C), 关于Java规范的说明书,是这项技术的最终声明。因此CCF从表面上来说会不再存在,但是实际上与J2EE标准是一致的。
问: WebSphere 4.0 Enterprise Edition 中包括TX Series吗?
答: WebSphere 4.0和3.5的企业版中都包括TX Series。
问: WebSphere 4.0 EE 版中是否有一个独立于Business Rule Beans的rules-engine?
答: 在企业版中实现的唯一的规则技术是Business Rules Beans - 它不是实现在AI(人工智能)中所说的rule-based engine (既从一系列的规则中发现新的知识) BRBs是一个方法用来客观的确认或者是"derivation" (calculation) 某种算法,通过这种方式使得我们可以很容易的修改在你的应用程序中的一些行为方式或准则(通过一些管理配置而不是编程)。
问: 如果用户想要将 MS SQL 作为他的应用数据库,那么用户是否可以从Merant公司购买相关的Merantdrivers并将它安装到AEs上?
答: 顾客可以从Merant公司购买相应的drivers,同时安装它们与AES一块协同工作。但是IBM不建议与支持顾客使用这种配置。
问: 在远程机器上运行LaunchClient命令需要什么? (也就是,所需要的JVM在什么地方)
答: 这需要WebSphere的客户端容器(client container)的安装。这个安装将会把JVM和其他所有需要的WebSphere类文件安装到远程客户机上。
问: WAS 4.0 能使用其它厂商的JNDI目录服务吗?
WebSphere 能够在其它厂商的JNDI目录服务器上实现JNDI查找。然而,部署在WebSphere上的EJB仍将注册在WebSphere的内部JNDI命名空间内,这是不可以被配置修改的。
问: XMLConfig 能否实现对多个服务器组和克隆的管理?
答: 可以实现这种管理。
问: 将来 XMLConfig 和 WSCP 这两种管理方式功能会不会更加接近?
答: XMLConfig 和 WSCP 这两种工具是用来实现两个不同的相互分离的任务。 XMLConfig设计用来实现服务器配置信息的改变,例如建立或修改服务器组。 WSCP是设计用来实现进一步的操作,比如说开始或停止某些对象的运行以及完成一些脚本定义的任务。在WSCP中能够调用XMLConfig工具。
问: 在VisualAge for Java 4.0 是否有WebSphere 4.0的测试环境WebSphere TestEnvironment (WTE) ?
答: 没有,因为在VisualAge for Java 4.0 中的JDK版本仍然是1.2.2 SR9 ,因此其内嵌的WTE不能同步升级到4.0. 在我们的应用部署到生产环境前,可以使用WAS AEd来进行应用程序的测试。
问: WebSphere 能否使用 JNDI作为其用户的注册表来进行身份认证?
答: 可以,在你的身份认证机制使用pluggable user registry表时,你需要实现一些pluggableuser registry定义中所支持的一些必须的接口API,同时你也可以从其他合适的地方包括JNDI服务器中获得一些相应的认证信息。
问: XMI 是代表什么意思?
答: XMI代表XML Metadata Interchange也就是XML元数据交换。
问: 在WebSphere4.0高级版中是否会和AEs版一样有基于web方式的管理控制台?
答:目前在WebSphere4.0高级版中没有计划推出基于浏览器方式的管理控制台。高级版中用其它的工具,命令行的XMLConfig 和WSCP方式来实现管理控制台的功能。
问: 在WebSphere 4.0高级版的软件包中是否包括MQSeries ?
答: 没有在WebSphere高级版以及 AEs 4.0或者是AEd 4.0软件包中没有包括MQSeries 。
问: 在WebSphere 4.0中所支持的XML 技术包括那些( XERCES, XALAN)?
答:包括 XML 4J 3.1.1 => Xerces 1.2.1
XSL 2.0 => Xalan 2.0。
问: 如果你手动的在EJB中抛出一个异常,在EJB客户端中能否接收到这个异常信息?
答: 可以。如果使用EJBs,那么出现的异常信息一般都会在客户端也有显示。
问: 请列出设置多节点的WebSphere管理域的方法(使用DB2)
答: 假定你已经在其中的一台机器上建立了WAS管理数据库。
在DB2的客户机上(远程的WebSphere 节点), 做下列的操作:
db2 catalog tcpip node <db2 nodename> remote<remote-node> server db2cdb2
例如:: db2 catalog tcpip node WSNode1 remoteWSNode1.rchland.ibm.com server db2cdb2
db2cdb2 是在 winntsystem32driversetcservices 文件中的入口点设置,例如:db2cdb2 50000/tcp
或者在"services" 文件中设置监听端口为50000的合适的服务名。
如果在你的客户机上只安装了DB2客户端,那么你可能需要在服务文件中输入相应的 db2cdb2 入口。
这样在你的DB2控制中心上将会出现你已经设置过的远程节点。
db2 catalog dB <remote dB name>as <local alias name> at node<db2 node name>
比如说: db2 catalog dB was as was2 at node WSNode1
你将看到在你的远程节点上会出现别名为WAS2的远程WAS管理数据库。
在 admin.config 文件中做下列的改变:
将管理数据库的名字改变为你所设置的数据库别名(在我们的例子中是was2):com.ibm.ejs.sm.adminServer.dbdatabaseName=was2 .
如果你需要建立数据库的初始配置信息,那么需要将 install.initial.config=true .
修改为 com.ibm.ejs.sm.adminServer.createTables=false .
如果你将这个值设为"true,"那么它代表将重建你的WAS管理数据库中的所有表,因此,除非你有这个必要,否则我们不要把这个值设为"true,"。
问: PMI (性能监测基础平台)是否在WebSphere高级版和AEs版中都支持?
答: PMI 只能在WebSphere高级版本中使用。在AEs中没有这个工具支持。
问: 可不可以通过一个Java API来启用关于PMI Instrumentation 的支持?
答: 我们只能通过管理控制台或者是资源分析器Resource Analyzer来启用关于PMIinstrumentation 的支持,目前我们不支持通过Java API 来启用PMI instrumentation 。
问: PMI instrumentation 级定义是否可以设置到关于EJBs 和 servlets的方法级?
答: PMI instrumentation 可以设置到EJB 的方法级别。而对于servlets来说, PMIinstrumentation 只能设置到servlet层次,而不能设置到关于这个servlet所调用的方法。