论坛首页 入门技术论坛

小心JRE升级带来的麻烦

浏览 11210 次
该帖已经被评为新手帖
作者 正文
   发表时间:2011-04-06   最后修改:2011-04-07
Windows 2003的服务器部署了Tomcat(6.0.29)服务,JRE版本是Java 6 Update 21,一直稳定运行,前几天维护时更新了JRE到Update24,结果造成Tomcat启动失败,log没任何记录,最后查到是jvm.dll版本问题。

之前为了调优在Tomcat Config里指定了server\jvm.dll,完全按JRE安装包内README操作,copy JDK_HOME\jre\bin\server到JRE目录
引用

    jre\bin\server\
        On Microsoft Windows platforms, the JDK includes both
        the Java HotSpot(TM) Server VM and Java HotSpot Client VM.
        However, the Java SE Runtime Environment for Microsoft Windows
        platforms includes only the Java HotSpot Client VM. Those wishing
        to use the Java HotSpot Server VM with the Java SE Runtime
        Environment may copy the JDK's jre\bin\server folder to a
        bin\server directory in the Java SE Runtime Environment. Software
        vendors may redistribute the Java HotSpot Server VM with their
        redistributions of the Java SE Runtime Environment.


近期的JRE升级并不会更新server目录的jvm.dll造成Tomcat服务启动失败,严重质疑这官方解决方案,后续隐患不断。

-----------2011-04-07 更新------------------------
几个关键点
·安装为服务的Tomcat,在Config中要制定jvm.dll地址,这个指定决定了使用client模式还是server模式,生产模式server模式基本是必选,会提高性能

·默认的JRE更新不会更新自身ReadMe建议的从JDK目录copy过来的jvm.dll

·Java 6 Update 22推荐升级
   发表时间:2011-04-07  
Tomcat需要的是JDK不是JRE。你应该更新JDK,而不是只更新JRE。
很奇怪你的机器居然没有安装JDK,只靠JRE运行。不至于差这点地方吧。
0 请登录后投票
   发表时间:2011-04-07  
魔力猫咪 写道
Tomcat需要的是JDK不是JRE。你应该更新JDK,而不是只更新JRE。
很奇怪你的机器居然没有安装JDK,只靠JRE运行。不至于差这点地方吧。


JDK:Java Development Kit
JRE:Java Runtime Environment

一个是开发环境一个是运行环境,正常情况只靠JRE就足以运行,猫咪对这个理解有点偏差吧....

生产环境使用server模式几乎是必然的优化,而Windows版的JRE竟然没有提供,在自带的README里就有了那段提示,提示从JDK里copy,不了解Sun的用意何在。恰恰在copy之后升级了JRE,这个升级并不会更新copy过去的server目录(主要是jvm.dll),结果版本不同,运行自然挂掉。找到相同版本JDK\jre\bin\server,再copy过去问题解决。
0 请登录后投票
   发表时间:2011-04-07  
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。
0 请登录后投票
   发表时间:2011-04-07   最后修改:2011-04-07
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了
0 请登录后投票
   发表时间:2011-04-07  
JRE跑swing的吧?服务端还有人用JRE跑?
0 请登录后投票
   发表时间:2011-04-07  
Foxswily 写道
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了

很多软件,特别是服务器很多都是必须用到JDK的。不然也不会专门在安装指南中写明了。我不知道你是否是做带嵌入服务器一类的应用的。除非是这种应用,不然不应该对这个问题提出意见。
对于服务器软件来说,JDK并不大。WebSphere、WebLogic等等动辄都几百M,大点的套装好几G。几十M的JDK实在是太小了。
0 请登录后投票
   发表时间:2011-04-07  
ls这些人的回答能让人疯掉

根本没分清楚jdk,jre的作用
0 请登录后投票
   发表时间:2011-04-07  
web容器需要jdk是因为需要在运行时将编译jsp。JRE里面没有编译时需要的库。如果表现层不用jsp,而是freemarker或velocity,用jre就足够了。
0 请登录后投票
   发表时间:2011-04-07  
魔力猫咪 写道
Foxswily 写道
魔力猫咪 写道
绝大多数Java服务器都要求JDK而不是JRE。这个你可以看一下各个不同版本服务器的说明文档。要求的基本上都是JDK的。
我目前只在Tomcat的安装文档里面看到JRE,其他服务器软件都要求的是JDK。


使用JRE运行这是Java基本规范,即便是JDK也是用里边包含的JRE运行而已。对JRE体积太大的抱怨由来已久,要真要求带个JDK,更疯了

很多软件,特别是服务器很多都是必须用到JDK的。不然也不会专门在安装指南中写明了。我不知道你是否是做带嵌入服务器一类的应用的。除非是这种应用,不然不应该对这个问题提出意见。
对于服务器软件来说,JDK并不大。WebSphere、WebLogic等等动辄都几百M,大点的套装好几G。几十M的JDK实在是太小了。


跑题了....那就先跑下去再说

http://www.java-tips.org/java-se-tips/java.lang/what-is-the-difference-between-jdk-and-jre.html
引用

The "JDK" is the Java Development Kit. I.e., the JDK is bundle of software that you can use to develop Java based software. The "JRE" is the Java Runtime Environment. I.e., the JRE is an implementation of the Java Virtual Machine which actually executes Java programs.

Typically, each JDK contains one (or more) JRE's along with the various development tools like the Java source compilers, bundling and deployment tools, debuggers, development libraries, etc.

看看JDK和JRE的区别,JDK只是包含了JRE和一些工具的开发包,如果不考虑维护、调优之类的工作完全可以使用JRE替代JDK做运行。

再说回在服务器部署的问题,如果是Linux/Unix环境完全没现在的问题,而在Windows平台上JRE是可以自动更新的,JDK不会,在JRE不提供Server模式(jvm.dll)的前提下,官方提供的方案是使用JDK的server\jvm.dll

这已经是个悖论了,要么使用JDK不自动升级,要么使用JRE不能用Server模式的自动升级。如果Sun是故意这么做来表达对Windows的鄙视那无话可说。只是在WinOS上做维护的哥们要多个心眼,升级版本要多加小心。

0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics