`
Foxswily
  • 浏览: 77436 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

小心JRE升级带来的麻烦

阅读更多
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推荐升级
分享到:
评论
31 楼 soft_xiaohui 2011-04-08  
jdk和jre的区别也一直是我想弄明白的问题。
看了ls的回复:基本是jdk有javac,能编译。
所以我也想tomcat用jdk较好。
在说有限代码会动态产生类,还是要编译的。
30 楼 ppgunjack 2011-04-08  
和系统调用最近的一层永远是维护的梦魇
Oracle在linux下安装还要gcc,大点的安装套件自己带一堆东西安装时候现编译也不少见,用完其实就不需要了,不过在安装文档前缀的假设中都会列出来
29 楼 魔力猫咪 2011-04-08  
ansjsun 写道
rockis 写道
web容器需要jdk是因为需要在运行时将编译jsp。JRE里面没有编译时需要的库。如果表现层不用jsp,而是freemarker或velocity,用jre就足够了。

同意..但是tomcat好像是要用jdk的啊...没用过freemarker..我估计也要用jdk的...没有jdk..jsp怎么编译呀

Tomcat5.5以上的JSP编译缺省使用了一个自己内嵌的JDT编译器。所以可以只用JRE来运行。不过这也是我唯一看到只需要JRE就可以运行的服务器了。这种特性我认为可能是用来搞嵌入的。把Tomcat嵌入到其他软件中,如果需要额外安装JDK的话,软件就会变大。那么如果可以只使用JRE就会给部署带来便利。
我在这里回了这么多帖子,是因为头一次看到只用JRE做服务器虚拟机的。
28 楼 zhou7707 2011-04-08  
楼主小白,鉴定完毕
27 楼 DOCDOC 2011-04-08  
好有喜感的讨论
26 楼 ansjsun 2011-04-08  
rockis 写道
web容器需要jdk是因为需要在运行时将编译jsp。JRE里面没有编译时需要的库。如果表现层不用jsp,而是freemarker或velocity,用jre就足够了。

同意..但是tomcat好像是要用jdk的啊...没用过freemarker..我估计也要用jdk的...没有jdk..jsp怎么编译呀
25 楼 lookdd1 2011-04-07  
JRE自动更新更多的是为了给客户端电脑用的吧。这帖子还没辨明白。。。猫咪童鞋说的很明白。自动更新和体积都不是服务器使用JRE而不用JDK的理由。
24 楼 huadi223 2011-04-07  
如果是拷贝的JRE和JDK,手动配置环境变量也会自动升级吗?
23 楼 JE帐号 2011-04-07  
我也记得给装JDK,有些web容器自带编译器就不用了.
22 楼 Foxswily 2011-04-07  
tfwin2 写道
Foxswily 写道
使用JRE还是JDK更合适的问题可以讨论的就多了,主要还得看到底部署什么样的服务,真可以另开贴总结总结,到底都有什么优势
JDK:
    优点:
        编译JSP
        Windows下提供Server模式dll
        附带工具
    缺点:
        体积大
        Windows下没提供自动更新
JRE:
    优点:
        体积小
        Windows提供自动更新
    缺点:
        Windows下不提供Server模式dll

继续补充

今天也遇到这个问题,难道就不能禁止JRE升级吗?我重装之后JRE没有处理,项目启动正常之后就没有继续管了,看来还有后期隐患。。。。
明天需要跟客户说明一下,另外,真心问一句,JRE的自动升级能不能禁止掉?或者,TOMCAT6能不能用JDK运行?6没有STARTUP.BAT了,他的配置直接指向JVM.DLL,JDK里没这个东西啊?


控制面板->Java->更新 关掉就行了
JDK是自带jre的jre\bin\server\jvm.dll
21 楼 魔力猫咪 2011-04-07  
我认为目前只要部署服务器,那么安装JDK是应该的。这也是几乎所有的Java服务器所要求的。
像Tomcat这种内置JDT来编译JSP的特例,我觉得它更多是为了进行内嵌而不是服务器。
JRE就是用来运行桌面和Applet的,不是为了服务器应用的。
服务器不差JDK这点空间,自动更新这种特性在服务器上一般是不可以开启的。没有确定稳定性就自动升级是不负责任的表现。
20 楼 tfwin2 2011-04-07  
Foxswily 写道
使用JRE还是JDK更合适的问题可以讨论的就多了,主要还得看到底部署什么样的服务,真可以另开贴总结总结,到底都有什么优势
JDK:
    优点:
        编译JSP
        Windows下提供Server模式dll
        附带工具
    缺点:
        体积大
        Windows下没提供自动更新
JRE:
    优点:
        体积小
        Windows提供自动更新
    缺点:
        Windows下不提供Server模式dll

继续补充

今天也遇到这个问题,难道就不能禁止JRE升级吗?我重装之后JRE没有处理,项目启动正常之后就没有继续管了,看来还有后期隐患。。。。
明天需要跟客户说明一下,另外,真心问一句,JRE的自动升级能不能禁止掉?或者,TOMCAT6能不能用JDK运行?6没有STARTUP.BAT了,他的配置直接指向JVM.DLL,JDK里没这个东西啊?
19 楼 Foxswily 2011-04-07  
使用JRE还是JDK更合适的问题可以讨论的就多了,主要还得看到底部署什么样的服务,真可以另开贴总结总结,到底都有什么优势
JDK:
    优点:
        编译JSP
        Windows下提供Server模式dll
        附带工具
    缺点:
        体积大
        Windows下没提供自动更新
JRE:
    优点:
        体积小
        Windows提供自动更新
    缺点:
        Windows下不提供Server模式dll

继续补充
18 楼 魔力猫咪 2011-04-07  
我认为你们曲解了这个redme。没人让你们这么部署生产服务器。
这个文件是JRE的说明文件,里面对JDK的文件有一些说明,一个是列出文件列表,说明如果其他开发商内含JRE发布的时候,可能额外附带的一些JDK文件。这个JVM也在内,和它存在相同问题的还有一个MIDI音乐模块。
我认为这个是告诉用户,如果你发现用的JRE和官方下载的不一样,那么是怎么回事。
你们这种情况其实是对JRE进行了一个专门的定制行为。而Oracle的自动更新当然不会管你们这种定制。所以你们更新完JRE后,必须自己进行定制操作。
Tomcat是我唯一一个看到说使用JRE作为虚拟机的服务器。要知道,Java服务器在处理Web的时候,很多时候是需要一些JDK的功能的。比如你将JSP编译成类,是需要JDK的。而Tomcat从5.5开始比较特别,采用了Eclipse JDT Java编译器进行JSP编译,所以可以不用JDK。
17 楼 xgj1988 2011-04-07  
呵呵。讨论激烈。但是确实运行JAVA程序只需要JRE ,你可以把TOMCAT的startup.bat里面的JAVA_HOME执行jre/bin/java照样能启动。
16 楼 freej 2011-04-07  
从头看到尾,当笑话看,忍不住了,就是因为这个JavaEye才改名为ItEye的吧?

没别的意思,想活跃下气氛而已。实践出真知,实践下就好。各方息怒。:)
15 楼 Foxswily 2011-04-07  
紧急下潜 写道
兄弟,这个貌似是你自己的问题吧,这个文件是你自己copy的,此外当你的服务在运行的时候,jvm.dll无法被替换,
你应该停掉服务在升级。


关掉服务器升级是肯定的,Copy那事就说来话长了,初次部署的跟升级的不是一拨人,升级后启动失败,查了半天原因才发现是jvm.dll的问题,Copy的人理直气壮的拿ReadMe说事,下载的JRE不包括Server版,让Copy了升级又不管,猜不透Sun这么干的原因

没打算当个事,就想提个醒,省得有类似情况的哥们走弯路,哪知道引出这么一堆讨论来。
14 楼 紧急下潜 2011-04-07  
兄弟,这个貌似是你自己的问题吧,这个文件是你自己copy的,此外当你的服务在运行的时候,jvm.dll无法被替换,
你应该停掉服务在升级。
13 楼 Foxswily 2011-04-07  
魔力猫咪 写道
这个话指的是Java Applet和桌面应用。并不涉及JavaEE开发。人家说的是JavaSE,你却往JavaEE上面套。
如果你说的正确,那么Oracle现在自己的JavaEE包里面应该是JRE而不是JDK。


JRE和JDK的讨论,又掺和进J2SE和J2EE,更乱了。

简单点,你试试只装个JRE跑Tomcat
12 楼 wxlmcqueen 2011-04-07  
jre足以,java生成的exe文件,也可以使用,想必里面封的运行包 不必需jdk

相关推荐

    JRE瘦身 jre减肥 精简jre jre精简

    因为很多用户的电脑上没有合适版本的jre。用一个软件的同时必须安装另外一个软件(jre)会给人一种流氓软件强行捆绑的感觉,而很多用户对此很抵触。更不要提用户电脑上的jre版本千变万化(有没有jre,是微软的还是...

    studio2.2.3的jre文件夹

    用户可能需要替换升级后AS 3.0中的默认JRE,使用这个特定版本的JRE来恢复中文输入功能。 针对这个问题,我们可以提供以下几点详细知识: 1. **Java运行环境(JRE)**:JRE是Java应用程序执行所需的基础组件,包括...

    JRE1.6 Win32 X86

    对于仍在使用旧版Java应用的用户,保持JRE1.6的更新是必要的,但也要意识到这可能带来的安全风险,因为旧版本不再接受官方的安全更新。因此,升级到最新版本的Java(如果应用程序兼容)是明智的选择。

    jre9下载 jdk9

    对于开发者而言,升级到JRE 9意味着需要适应新的API和编程模式。例如,模块系统的引入可能要求重构已有的代码库,以符合新的模块化标准。此外,开发者还需要了解新的JDK工具,如JShell,以利用其带来的便利。 总之...

    精简jre步骤 迷你jre制作过程

    精简jre步骤 1. 拷贝一个完整版的jre文件夹到D盘 2. 删除jre目录下所有出bin和lib目录的所有文件或目录 3. 打开cmd窗口,设置path路径为空,转到D:\jre\bin目录,运行java –version。正常显示当前Java的版本。 4. ...

    jre1.6.25_32位

    总的来说,"jre1.6.25_32位"是一个专为Windows 32位系统设计的老版本Java运行环境,适用于那些需要运行基于Java 6的应用程序的用户,尤其是那些不能或不想升级到更高版本的场景。其无捆绑的特点保证了用户可以纯净地...

    jre6 java运行环境免安装版

    10. **维护与更新**: 虽然JRE6已经不再接收官方的安全更新,但为了系统的安全性,建议用户升级到最新版本的JRE或JDK。对于仍需使用JRE6的场合,可以选择第三方安全补丁或社区维护的版本。 总结来说,"jre6 java运行...

    android studio3.0.1的jre包替换

    此外,升级JRE可能会影响到其他依赖于特定JRE版本的软件,所以在替换前要权衡利弊。 总的来说,"android studio3.0.1的jre包替换"是一种针对特定问题的解决策略,通过调整开发环境的底层组件来提升软件的使用体验。...

    JRE1.8.0-391

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的...总之,JRE1.8.0_391作为Java 8的一个更新,旨在为用户提供一个更加安全、高效的运行环境,开发者和用户都应关注其更新内容,并适时进行升级。

    jre-8u241-linux-i586.tar.gz

    JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8.JRE8....

    java的jre1.5

    Java的JRE1.5,全称为Java Runtime Environment 1.5,是...综上所述,Java的JRE1.5在语言特性、性能优化、安全性等方面都有显著进步,为开发者提供了更为强大和易用的开发环境,同时也为用户带来了更好的Java应用体验。

    jre 1.8.45 下载

    因此,为了系统的安全性,通常建议用户保持JRE版本的最新,及时升级到更安全的版本。 4. **安装与配置**:下载JRE 1.8.45后,用户需要进行安装,这通常包括解压文件、设置环境变量(如JAVA_HOME)以及确保系统路径...

    jre-8u301.zip

    (1)jre-8u301-linux-i586.rpm (2)jre-8u301-linux-i586.tar.gz (3)jre-8u301-linux-x64.rpm (4)jre-8u301-linux-x64.tar.gz (5)jre-8u301-macosx-x64.dmg (6)jre-8u301-macosx-x64.tar.gz (7)jre-8u...

    超级精简版的jre

    Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序所必需的基础软件...然而,使用时需谨慎,因为它可能会影响到部分功能的正常使用,因此在选择使用精简版JRE时,需要充分考虑其可能带来的影响和风险。

    jre1.6安装版(含32位和64位)

    因此,建议用户及时升级到更高版本的JRE,如JRE 8或更高,以获取最新的安全补丁和性能优化。 7. **兼容性问题** 在某些老版本的操作系统或硬件环境下,JRE 1.6可能是唯一可行的选择。在这种情况下,理解JRE 1.6的...

    jre1.8.0.zip

    Java运行环境(JRE,Java Runtime Environment)是执行Java应用程序所必需的基础组件,它包含了Java虚拟机(JVM)、Java核心类库以及其他支持文件。"jre1.8.0.zip"是一个包含JRE 1.8.0版本的压缩包,其中的"jre1.8.0...

    jre1.8.0 64bit

    JRE 1.8.0的引入带来了许多重要的新特性和改进,其中最著名的是Lambda表达式,这是一种新的语法结构,使得函数式编程风格在Java中变得更为便捷。此外,还增强了类型推断、改进了垃圾收集算法,如G1垃圾收集器的优化...

    JRE7-32bit

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的必备组件,它包含了Java虚拟机(JVM,Java Virtual Machine)以及Java基础类库。标题中的“JRE7-32bit”指的是针对32位操作系统的Java运行环境第...

    jre1.8.0_161

    Java运行环境(JRE,Java Runtime Environment)是Java应用程序运行的必备组件,它包含了Java虚拟机(JVM,Java Virtual Machine)以及Java基础类库。标题中的"jre1.8.0_161"指的是Java运行环境的特定版本,1.8.0...

Global site tag (gtag.js) - Google Analytics