J2EE体系结构和设计2011-04-11 IBM Bobby Woolf引言Java™ 2 企业版(Java™ 2 Enterprise Edition,J2EE)是开发并部署企业 应用程序的环境。J2EE 平台由服务、应用程序编程接口(application programming interfaces,API)及协议所组成,该协议提供了开发多层的且基于 Web 的应用程序的功能 。关于产品信息的内容,请见 WebSphere Application Server 专区 和 WebSphere Studio 专区。问:EJB 或 Web 服务的 BEA 控制及注释看上去是非常强大的并且易于使用这些技术。对 此,您的看法是什么?在 WebSphere® 中使用这些技术有多容易?答:您似乎希望获得 BEA® WebLogic Workshop 和 IBM WebSphere Studio Application Developer(以下简称 WebSphere Studio)的比较。我没有使用过 Workshop, 所以不能直接评论它的特点。WebSphere Studio 确实包含许多对于元信息的编辑器,如部署 描述符。使用这些编辑器比编辑原始的 XML 要容易得多(虽然 Source 记录页面也允许您那 样做)。同样,在 WebSphere Studio V5 中重新设计了这些编辑器,使其与 J2EE 指定的和 WebSphere 指定的配置设置有更加明显的不同。问:您知道如果启用了 WebSphere Application Server V5.1 Global Security,那么 Web 服务和 WebSphere Application Server 之间的传输是否可以自动地转换成 https?例 如,使用 defaultSSLsettings 和 jmserver 认证。我不必在 Web 和 Application 服务器 之间创建新的证书。同时,我已经具有 Web 和浏览器客户端之间的 https 了。目前,这仅 是不完整的 Web<>WAS https。全局安全性还没有被启用。答:在 WebSphere Application Server 5.1 中启用全局安全性会自动地进行 Web 服务 的 HTTPS 转换吗?据我所知不是这样的。您需要自己手动完成。请见 WebSphere Application Server Information Center 中的“调用 HTTPS 上的 web 服务” 和“使用 HTTP 基础认证来安全化安全的 Socket 层上的简单对象访问协议服务 ”。问:在我们的项目中有一套 EJB。基本上,我们具备安装在 WebSphere Studio V5.1.2 上的 EAR 文件。当测试环境服务器运行时,对于 EJB 项目及客户端项目的代码变更都不会 受到影响。每次我都需要重新启动测试环境服务器才能使得改变生效。那么,存在任何方案 或配置装置来解决这个问题吗?答:如果在您使用调试器编辑代码的时候(例如编辑 EJB 实现类,但不改变 EJB 的接口 )启用了 hot-method 替换,那么将立即改变正在运行的应用程序的代码。请见 WebSphere Studio 的在线帮助中的“Hot-method 替换”。您也可以重启个别项目,这比重 新启动整个项目要快得多。然而,许多变更需要重启测试服务器才能实现;请见 WebSphere Studio 的在线帮助中的“何时需要重启测试服务器”。也可参阅“调试服 务器上的企业级 bean”和“调试服务器上的 servlet”。问:在 Web 应用程序中,我们希望将 uid 和 pwd 传递到 EJB 层中,以便会话 EJB 能 够通过 uid 和 pwd 连接到后端系统。我们不想将 uid 和 pwd 作为参数传递,或者存储到 一些从 Web 层到 EJB 层传递的对象中。同时,存在不同的流程,它需要使用 uid 和 pwd 来连接后端。您能推荐完成该任务的解决方案吗?答:对于 J2EE 应用程序,所有用户都使用同样的登录信息来访问后端系统。J2EE 不能 使每个应用程序的用户都使用各自的登录信息。您的 EJB 层应当是无状态的服务,该服务由 无状态的会话 bean 来负责管理,所以不能存储用户的数据,如用户名或密码。您可以在用 户的 HTTPSession 中存储这些项目,但是这可能是巨大的潜在安全漏洞,并且登录信息可能 不是非常有用的。所以,您需要使用 J2EE 服务来访问后端系统,它对于所有用户都使用同 样的登录信息。如果您的后端系统是 JDBC 数据库,那么您应当将登录信息与数据源联系起来。例如,在 WebSphere Studio 中,在服务器配置编辑器中添加登录信息作为安全页面上的 JAAS 认证条 目,然后将其指定为数据源容器管理的认证别名(在数据源页面上)。对于其他的后端系统 ,您应当获取或开发适合于 J2EE 连接器体系结构(J2EE Connector Architecture)的适配 器,它也提供了登录信息。如果您有两种类型的用户,那么他们应当使用两种不同的登录信息,我的文章消除 J2EE 1.3 的服务探测器实现中的缓存中讨论了如何使用两个不同的 EJB 类来完成此项工作(登录 )。显而易见,该技术不能使得成百上千的用户都用他们自己的登录信息登录。