5

我目前在 websphere 6.1 环境中使用 Spring 3.0 框架。我使用的 IDE 是 RAD(Rational Application Developer)7.5。昨晚我正在解决一个问题,我发现在我的工作区进行更改后,我的代码没有在服务器上 100% 刷新。我的问题是从 websphere 的角度来看,以下内容有什么区别:

  1. 重新启动安装了 EAR 的整个服务器
  2. 在 WebSphere 中清理 EAR
  3. 单击项目并选择发布

在开发 J2EE 应用程序时,其他应用程序服务器/IDE 是否存在相同类型的同步问题?

4

2 回答 2

5

使用 RAD,这是默认行为。当您“清理”时,它会删除已编译的对象并通过“全部构建”重新创建它们,然后执行“发布”。当您“构建”时,它会构建它认为必要的任何内容,然后进行“发布”。当您“构建所有”时,它会构建所有对象,然后执行“发布”。

当您(或您的 IDE 通过上面的命令)执行“发布”时,它会获取所有已编译的对象并将它们部署到您为此项目设置的服务器上(如果服务器正在运行,则通过热交换)。热交换适用于某些事物(例如 JSP),但不适用于其他事物(配置文件、EJB 等)。如果无法正确进行热插拔,您需要退回您的服务器。

例如,如果您将 RAD 设置为自动构建,您的服务器正在运行,并且您更改了 EJB,将会发生以下情况:
1. EJB 将被编译
2. 如果项目正常,RAD 将部署您的更改
3. 服务器可能无法获取您的热交换更改,因此服务器将继续运行旧代码

当这种情况发生时,服务器会反弹,代码将被提取。

于 2010-02-23T16:08:07.900 回答
2

重新启动服务器需要一些时间,但如果文件系统上存在文件,则肯定会重新加载文件。我不确定从服务器视图中调用 Clean。

如果您在服务器视图中调用发布,RAD 将重新启动服务器上的应用程序。因此,更改通常会被拾取。

您需要了解所做的更改类型并查看 WebSphere Application Server 需要什么来加载更改。如果您滚动到链接帮助条目的底部,您可以看到每个 JavaEE 模块类型的一个链接,该链接指向一个文档,该文档描述了获取更改所需的操作。 http://publib.boulder.ibm.com/infocenter/wasinfo/v7r0/index.jsp?topic=/com.ibm.websphere.base.doc/info/aes/ae/trun_app_hotupgrade.html

否则,您应该了解从更改到在浏览器中获取它的整个生命周期,例如文件更改,文件编译,准备部署运行,类加载器看到更改,通知应用程序需要重新启动,用户调用 Republish 以重新启动服务器上的应用程序,用户刷新网页,Firefox 在 Firebug 中显示 HTTP 标头中的 Last-Modified 时间戳已更改。

我不确定热交换是什么意思,但是在调试服务器时,如果没有对类的引用或类结构没有改变,热代码方法替换可以替换被调试服务器中的类。

本网站上的帖子是我自己的,并不一定代表 IBM 的立场、策略或意见

于 2010-08-07T14:06:52.197 回答