离开工作一段时间后,似乎我的一位同事决定尝试使用我们的登台服务器。由于开发使用新的数据库访问框架,他安装了一堆东西,如果与内部开发的应用程序有任何不必要的交互,则不必小心。
旧的DBA / Programmer编写了一个粗略的连接类来访问MS-SQL'08服务器,而不是使用任何类型的框架来处理来自JSP应用程序的SQL调用。有问题的类已经消失,我们没有它的源代码。
因此,当我回到工作并尝试暂存新开发的应用程序时,我设法使JVM崩溃,这是转储文件。
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x000000006f19137c, pid=692, tid=6096
#
# JRE version: Java(TM) SE Runtime Environment (7.0_75-b13) (build 1.7.0_75-b13)
# Java VM: Java HotSpot(TM) 64-Bit Server VM (24.75-b04 mixed mode windows-amd64 compressed oops)
# Problematic frame:
# V [jvm.dll+0x12137c]
#
# Core dump written. Default location: C:\Program Files\Apache Software Foundation\Tomcat 7.0\hs_err_pid692.mdmp
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
#
整个转储文件位于:pastebin.com/TtgdkLer
我尝试做什么:
没有任何作用。
我发现的是在主要应用程序web.xml上有一个过滤器,如果我删除,不会崩溃服务器:
<filter-mapping>
<filter-name>ConnectionFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
问题是此特定过滤器通过身份验证服务器路由连接。这意味着将其关闭将允许任何用户访问Intranet上的信息。
老实说,我没有选择。我拥有的最后一个选项是将整个服务器的状态回溯到整个前一段时间。有什么建议?
答案 0 :(得分:1)
崩溃报告在堆栈顶部有以下方法:
com.microsoft.sqlserver.jdbc.AuthenticationJNI.SNISecGenClientContext([B[I[BI[B[I[ZLjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/util/logging/Logger;)I+0
编辑:原始答案已过时
答案 1 :(得分:0)
好吧,我再次迁移服务器时遇到了同样的问题,但这次我更改了DLL时问题根本没有得到解决或改变。
我只是添加实际的JAR文件来自不同的包,这足以导致同样的错误,当我下载并安装了正确的JAR / DLL组合时,一切都很好。