angela 发表于 2017-2-10 08:06:35

启动jboss4.3时,内嵌的tomcat出现的No Certificate file specified or invalid file format异常

  背景:
  用jboss4.3启动实例的时候遇到的错误:
  09:49:19,850 INFO  JBoss Web Services - Native
09:49:19,850 INFO  jbossws-native-2.0.1.SP2_CP01 (build=200804021320)
09:49:21,255 INFO  Loaded Apache Tomcat Native library 1.1.22.
09:49:21,255 INFO  [AprLifecycleListener] APR capabilities: IPv6 , sendfile , accept filters , random .
09:49:22,379 INFO  [Http11AprProtocol] Coyote HTTP/1.1を http-127.0.0.1-58080 で初期化します
09:49:22,395 ERROR [Http11AprProtocol] エンドポイントを初期化中のエラーです
java.lang.Exception: No Certificate file specified or invalid file format
        at org.apache.tomcat.jni.SSLContext.setCertificate(Native Method)
        at org.apache.tomcat.util.net.AprEndpoint.init(AprEndpoint.java:684)
        at org.apache.coyote.http11.Http11AprProtocol.init(Http11AprProtocol.java:121)
        at org.apache.catalina.connector.Connector.initialize(Connector.java:1059)
        at org.apache.catalina.core.StandardService.initialize(StandardService.java:669)
        at org.apache.catalina.core.StandardServer.initialize(StandardServer.java:792)
        at org.apache.catalina.startup.Catalina.load(Catalina.java:518)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:558)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
确认点:
  1.java版本:jdk1.5中存在类似的bug,但在jdk1.6 b49后已修复
     详见:http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6339385
  2.tomcat版本:tomcat6.0.33以后apr选项默认开启,导致配置文件deploy\jbossweb.sar\server.xml中的protocol若设置为HTTP/1.1就会出以上错误,改为org.apache.coyote.http11.Http11Protocol即可;
  若版本是6.0.33之前,环境变量下的bin群中存在tcnative-1.dll这个文件,tomcat在启动的时候也会打开apr。这时可以删除文件,也可以将协议改成上述的样子。
  协议的修改原因可以参见apache的相关式样,因为本机使用的是jboss4.3内嵌的tomcat2.1.0,若是其他版本,可以自行选择一下的url的其他网页查看:
  http://grepcode.com/file/repository.jboss.org/nexus/content/repositories/releases/jboss.web/jbossweb/2.1.0.GA/org/apache/catalina/connector/Connector.java#Connector.setProtocol%28java.lang.String%29
  3.确认防火墙和RMI端口是否已经打开(这个方法会不会导致,我没有亲自再现,只是同事遇到过。个人表示怀疑)事后测试 error与此原因无关!!!

  *tcnative-1.dll这个文件是用于提高tomcat处理静态资源的性能的。
  最后说一下apr是否被开启的判断依据(以下红色部分)和启动log。
  其实tomcat启动时,会去环境变量里记载的所有bin中检查是否有提升性能的文件,若有则开启apr,找不到就不开启apr。
  未开启:
  16:24:05,309 INFO  JBoss Web Services - Native
16:24:05,309 INFO  jbossws-native-2.0.1.SP2_CP01 (build=200
804021320)
16:24:06,121 INFO  The Apache Tomcat Native library which
 allows optimal performance in production environments was not found on the java
.library.path: E:\Java\jdk1.6.0_26\bin;C:\WINDOWS\Sun\Java\bin;C:\WINDOWS\system
32;C:\WINDOWS;E:/Java/jdk1.6.0_26/bin/../jre/bin/client;E:/Java/jdk1.6.0_26/bin/
../jre/bin;C:\Apache-Subversion-1.7.5\bin;E:\Java\jdk1.6.0_26\bin;C:\middleware\
apache-ant-1.8.2\bin;C:\middleware\apache-maven-2.2.1\bin;C:\mysql5157\bin;E:\or
acle\product\10.2.0\db_1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\
Wbem;C:\Program Files\EmEditor;C:\Program Files\TortoiseSVN_1.7.5\bin;.
16:24:06,199 INFO  Coyote HTTP/1.1を http-127.0.0.1-58080 で初
期化します
16:24:06,605 INFO  Coyote HTTP/1.1を http-5443 で初期化します
16:24:06,605 INFO  Initializing Coyote AJP/1.3 on ajp-127.0.0.1-80
09
16:24:06,605 INFO  Initialization processed in 601 ms
16:24:06,605 INFO  サービス jboss.web を起動します

  开启apr:
  09:49:19,850 INFO  JBoss Web Services - Native
09:49:19,850 INFO  jbossws-native-2.0.1.SP2_CP01 (build=200804021320)
09:49:21,255 INFO  Loaded Apache Tomcat Native library 1.1.22.
09:49:21,255 INFO  APR capabilities: IPv6 , sendfile , accept filters , random .
09:49:22,379 INFO  Coyote HTTP/1.1を http-127.0.0.1-58080 で初期化します
页: [1]
查看完整版本: 启动jboss4.3时,内嵌的tomcat出现的No Certificate file specified or invalid file format异常