我这儿有一个MD5加密的DLL,我现在用java去掉用他,然后得到返回的字符串,现在我用JNI调用已经搞定,而且传进去的字符串得到返回的加密字符串也正确,没有问题,但是我把这个调用方法放到web应用里面去的时候,一到二天我的Weblogic服务器就会被搞死,我看了日志文件,是在调用DLL的时候,把JVM搞死了,weblogic也就跟着挂了。那位大哥帮我看一下,小弟万分感激。非常感谢。下面是我的日志代码:#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x2db53ee3, pid=1652, tid=2296
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_06-b05 mixed mode)
# Problematic frame:
# C  [UseDll.dll+0x3ee3]
#---------------  T H R E A D  ---------------Current thread (0x2b9b7e08):  JavaThread "[ACTIVE] ExecuteThread: '0' for queue: 'weblogic.kernel.Default (self-tuning)'" daemon [_thread_in_native, id=2296]siginfo: ExceptionCode=0xc0000005, reading address 0x2c455000Registers:
EAX=0x2c455058, EBX=0x261c9050, ECX=0x00000016, EDX=0x00000000
ESP=0x2b11f368, EBP=0x2b11f370, ESI=0x2c455000, EDI=0x2b11f3fc
EIP=0x2db53ee3, EFLAGS=0x00010216Top of Stack: (sp=0x2b11f368)
0x2b11f368:   261c9050 2b11f458 2b11f458 2db52bc4
0x2b11f378:   2b11f3d4 2c454fd8 00000080 2b9b7e08
0x2b11f388:   261c9050 261c9050 cccccccc cccccccc
0x2b11f398:   cccccccc cccccccc cccccccc cccccccc
0x2b11f3a8:   cccccccc cccccccc cccccccc cccccccc
0x2b11f3b8:   cccccccc cccccccc cccccccc cccccccc
0x2b11f3c8:   cccccccc cccccccc cccccccc 2c302c37
0x2b11f3d8:   79792c31 65766f6c 6e61572c 00697967 Instructions: (pc=0x2db53ee3)
0x2db53ed3:   00 00 00 75 14 c1 e9 02 83 e2 03 83 f9 08 72 29
0x2db53ee3:   f3 a5 ff 24 95 f8 3f b5 2d 8b c7 ba 03 00 00 00 
Stack: [0x2b0e0000,0x2b120000),  sp=0x2b11f368,  free space=252k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [UseDll.dll+0x3ee3]
C  [UseDll.dll+0x2bc4]
j  com.smsmanager.util.TbuserPassword.getCodingPwd(Ljava/lang/String;)Ljava/lang/String;+0
j  com.smsmanager.util.TbuserPassword.EncodePassword(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;+55
j  com.smsmanager.mxl.form.SmsUserLoginForm.validate(Lorg/apache/struts/action/ActionMapping;Ljavax/servlet/http/HttpServletRequest;)Lorg/apache/struts/action/ActionErrors;+153
j  org.apache.struts.action.RequestProcessor.processValidate(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Lorg/apache/struts/action/ActionForm;Lorg/apache/struts/action/ActionMapping;)Z+75
j  org.apache.struts.action.RequestProcessor.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+157
j  org.apache.struts.action.ActionServlet.process(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+19
j  org.apache.struts.action.ActionServlet.doPost(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+3
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;)V+139
j  javax.servlet.http.HttpServlet.service(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+30
j  weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run()Ljava/lang/Object;+43
j  weblogic.servlet.internal.StubSecurityHelper.invokeServlet(Ljavax/servlet/ServletRequest;Ljavax/servlet/http/HttpServletRequest;Lweblogic/servlet/internal/ServletRequestImpl;Ljavax/servlet/ServletResponse;Ljavax/servlet/http/HttpServletResponse;Ljavax/servlet/Servlet;)Ljava/lang/Throwable;+110
j  weblogic.servlet.internal.ServletStubImpl.execute(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Lweblogic/servlet/internal/FilterChainImpl;)V+295
j  weblogic.servlet.internal.TailFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+10
j  weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+28
j  com.smsmanager.filter.SetCharacterEncodingFilter.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;Ljavax/servlet/FilterChain;)V+39
j  weblogic.servlet.internal.FilterChainImpl.doFilter(Ljavax/servlet/ServletRequest;Ljavax/servlet/ServletResponse;)V+28
j  weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run()Ljava/lang/Object;+146
J  weblogic.security.acl.internal.AuthenticatedSubject.doAs(Lweblogic/security/subject/AbstractSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;
v  ~RuntimeStub::alignment_frame_return Runtime1 stub
j  weblogic.security.service.SecurityManager.runAs(Lweblogic/security/acl/internal/AuthenticatedSubject;Lweblogic/security/acl/internal/AuthenticatedSubject;Ljava/security/PrivilegedAction;)Ljava/lang/Object;+18
j  weblogic.servlet.internal.WebAppServletContext.securedExecute(Ljavax/servlet/http/HttpServletRequest;Ljavax/servlet/http/HttpServletResponse;Z)V+277
j  weblogic.servlet.internal.WebAppServletContext.execute(Lweblogic/servlet/internal/ServletRequestImpl;Lweblogic/servlet/internal/ServletResponseImpl;)V+270
j  weblogic.servlet.internal.ServletRequestImpl.run()V+215
J  weblogic.work.ExecuteThread.execute(Ljava/lang/Runnable;)V
J  weblogic.work.ExecuteThread.run()V
v  ~OSRAdapter
v  ~StubRoutines::call_stub
V  [jvm.dll+0x845a9]
V  [jvm.dll+0xd9317]
V  [jvm.dll+0x8447a]
V  [jvm.dll+0x841d7]
V  [jvm.dll+0x9ed69]
V  [jvm.dll+0x109fe3]
V  [jvm.dll+0x109fb1]
C  [MSVCRT.dll+0x2b530]
C  [kernel32.dll+0x26063]

解决方案 »

  1.   

    MD5加密有现成的类可以用啊,用dll形式中间绕了一圈,估计没用直接用java类稳定。
      

  2.   

    因为我的程序是和一套桌面应用程序一起用的,他们的桌面应用程序已经用这个DLL加密,并且数据库里面的有几十条的记录了.所以必须调用他这个DLL
      

  3.   

    java调用dll 个人觉得实在是别扭 在weblogic里用 会不会是jdk的版本问题导致的 weblogic自带的jdk一般比较低
      

  4.   

    各位朋友,我的问题解决了,哈哈,解决这个问题是我的运气,我用的是2003 Server的系统,原先是卡巴斯基的杀毒软件,后来中了病毒,我重装系统,用的是金山的杀毒软件,金山里面有系统漏洞扫描,我把七十个补丁打好以后我的这个问题也解决了。搞了我一个月,我现在只想说一句:windows真他妈的烂。
      

  5.   

    我也遇到这个问题了, 导致tomcat自动停止。
    难道是系统漏洞的问题啊