2011-07-21 22 views
0

我想知道是否有可能在Webpshere 7下启动一个必须使用JDK 1.5(不符合JDK 1.6)运行的战争。如何通过使用Websphere 7将环境限制为JDK 1.5来启动WAR?

+2

能否请你解释如何创建在java 1.5下工作并且不符合1.6的代码?据我所知java是向后兼容的。 – AlexR

+0

是的,我通常知道它是兼容的,但是战争是基于复杂的自制框架,在独立模式下,当我们将目标版本指定为1.5时,我们可以在JDK 1.6下运行该应用程序。但目前我们没有选择,我们必须找到一种方法来在WS7上运行我们的应用程序。当然,没有人知道WS如何工作:)。你知道,钱,合同,广告...... – thibault

+0

再次,找到什么具体需要你的自制框架?如果它检查Java版本,则调用System.setProperty()并传递模拟版本。还有什么可以的? – AlexR

回答

2

运行WebSphere Application Server 7.0是不可能/不支持的使用与产品捆绑在一起的任何其他JDK进行处理。

+0

ok thx为你的回应,但我们可以指定一个WS的节点,服务器,配置文件等元素的java版本。 – thibault

+0

我更新了答案。不,不可能/不支持使用与产品捆绑在一起的JDK以外的JDK运行任何进程类型。 –

+0

我不同意。但我不确定你在做什么。你没有提供任何细节。我再次回到我们身边。我们使用JDK 1.5。我们运行在WAS 7上,而且我们在使用数据库时没有问题。我们确实倾向于使用Hibernate和数据源。但仍然。我不认为你想做什么是不可能的。除非..你试图在1.5编译代码中使用1.6的特定API for JDBC。这是行不通的。 –

2

我想我很困惑你的问题。 JRE将向后兼容。因此,IBM WebSphere Application Server V 7.x.x.x中的1.6 JRE将在Java EE 1(我认为可能与Java 1.2兼容)的基础上运行Java EE代码,并且应该早于Java 1.1支持Java SE代码。 (为什么你想要走得那么远,我不确定....)。

真的没有什么问题。只需用1.5 JDK编译你的代码(这就是我们所做的),或者如果你想用1.6编译器编译它并标记编译器使用1.5。

您的代码不必须是1.6兼容的。它只需要符合1.5并且运行良好。这是与JDK和JRE抽象和向后兼容的关键。

作为一个例子,我们有一个企业应用程序,我们使用Sun/Oracle的1.5 JDK使用Maven 2进行编译。我们打包了几个开源项目的jar包,其中一些甚至达到1.3兼容和/或编译的历史。

我们使用Maven 2将所有这些打包为EAR,并将其部署到IBM的WebSphere Application Server(我们运行7.0.0.9)。我们的代码运行得很好。我们甚至有一些模块,我们使用JDK 1.6进行编译以利用6中的某些函数,但大多数代码都编译为1.5。它运行良好。

所以我想我很困惑你在问什么。你能否提供一个更具体的例子来说明你正在尝试做什么?因为从你告诉我的情况来看,你应该可以在WAS 7中运行得很好,而无需在JDK 6上编译。

+0

关于向后兼容,我们对JDBC(来自rt.jar的java.sql)有个问题。我们的应用程序使用java.sql中的类定义数据源,但是在jdk 1.5和jdk 1.6中,接口的签名是不同的(您可以看到类java.sql.Connection)。因此,如果我们无法在JDK 1.6中编译,并且如果我们在jdk 1.6下启动,那么我们有SQLException。这就是为什么我想知道是否可以为WS7元素(服务器,配置文件,节点,应用程序等)指定java版本 – thibault

+0

我想我没有看到你要去的地方。 java.sql.Connection不应该给您任何问题,因为您使用的是符合JDK 1.5的方法。你的SQLException是什么?如果您可以在堆栈轨道上发布,这对于我们解决您的问题更有帮助。另外...如果你在WAS中,为什么不使用数据源来抽象你的数据库,而不是试图使用直接JDBC,或者我误解了你想要做的事情? –