Jboss部署SpringBoot项目中遇到的问题-2

Jboss部署SpringBoot项目中遇到的问题-2

说明:Jboss7及之前名称都是Jboss,在8及之后的版本,名称改为wildfly,请知悉
南京某宁银行项目
上篇链接:Jboss部署SpringBoot项目中遇到的问题

JBoss启动WebService时报错

  • 问题:
CXF与Jboss-eap冲突报错:JBAS018733: Failed to process ph
  • 原因:经过研究和分析,是因为项目中生成webService客户端或其他地方使用了Apache-CXF框架,与Jboss-eap冲突所致。

  • 解决方法:找到%JBOSS-HOME%->standalone->configuration->standalone.xml

找到如下代码:

    <subsystem xmlns="urn:jboss:domain:webservices:1.1">
        <modify-wsdl-address>true</modify-wsdl-address>
        <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
        <endpoint-config name="Standard-Endpoint-Config"/>
        <endpoint-config name="Recording-Endpoint-Config">
            <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
            </pre-handler-chain>
        </endpoint-config>
    </subsystem>

将以上代码注释掉即可ctrl+shift+/,或者删除,如下:

    <!-- <subsystem xmlns="urn:jboss:domain:webservices:1.1">
        <modify-wsdl-address>true</modify-wsdl-address>
        <wsdl-host>${jboss.bind.address:127.0.0.1}</wsdl-host>
        <endpoint-config name="Standard-Endpoint-Config"/>
        <endpoint-config name="Recording-Endpoint-Config">
            <pre-handler-chain name="recording-handlers" protocol-bindings="##SOAP11_HTTP ##SOAP11_HTTP_MTOM ##SOAP12_HTTP ##SOAP12_HTTP_MTOM">
                <handler name="RecordingHandler" class="org.jboss.ws.common.invocation.RecordingServerHandler"/>
            </pre-handler-chain>
        </endpoint-config>
    </subsystem> -->

然后重新打包启动服务即可

Jboss使用bcprov报错

  • 问题:
java.lang.SecurityException: JCE cannot authenticate the provider BC
Caused by: java.lang.SecurityException: Cannot verify jar:vfs:/content/xxxxxx/WEB-INF/lib/bcprov-jdk15-1.46.jar!/
Suppressed: java.nio.file.NoSuchFileException: /tmp/jar_cachexxxx.tmp

用第一个错误google查找到的答案是添加BouncyCastle到Jboss或JDK,但是这样侵入性太大。

继续查找造成的原因是BouncyCastle无法加入到Provider里面,从第2,3行错误看可以初步确定是读取jar文件出错。可以参加解决方案1及jboss的说明
添加META-INF/jboss-deployment-structure.xml文件即可

说明:此处在WEB-INF下创建jboss-deployment-structure.xml也可以

<jboss-deployment-structure>
    <deployment>
        <resources>
            <!-- 切记此处使用自己本地的bcprov版本,一定要进行修改 -->
            <resource-root path="WEB-INF/lib/bcprov-jdk15-1.46.jar"
                use-physical-code-source="true" />
        </resources>
    </deployment>
</jboss-deployment-structure>

另外是JCE要求添加provider需要经过签名,如果是自己编译的jar包,需要自行使用jarsigner签名。

ch.qos.logback在Jboss上报错

  • spring boot 1.5.2部署到JBoss 8.1版本下报错信息如下:
10:30:16,689 WARN  [org.jboss.as.ee] (MSC service thread 1-5) JBAS011006: Not installing optional component org.springframework.http.server.ServletServerHttpAsyncRequestControl due to an exception (enable DEBUG log level to see the cause)
10:30:16,691 WARN  [org.jboss.as.ee] (MSC service thread 1-5) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to an exception (enable DEBUG log level to see the cause)
10:30:16,737 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-5) MSC000001: Failed to start service jboss.deployment.unit."partition-1.0.0.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."partition-1.0.0.war".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment "partition-1.0.0.war"
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:166) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
	at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) [jboss-msc-1.2.2.Final.jar:1.2.2.Final]
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [rt.jar:1.8.0_131]
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [rt.jar:1.8.0_131]
	at java.lang.Thread.run(Thread.java:748) [rt.jar:1.8.0_131]
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
	at org.wildfly.extension.undertow.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:207)
	at org.wildfly.extension.undertow.deployment.ServletContainerInitializerDeploymentProcessor.deploy(ServletContainerInitializerDeploymentProcessor.java:128)
	at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:159) [wildfly-server-8.1.0.Final.jar:8.1.0.Final]
	... 5 more
Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
	at org.wildfly.extension.undertow.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:199)
	... 7 more
Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more from [Module "deployment.partition-1.0.0.war:main" from Service Module Loader]
	at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:213) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:459) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:408) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:389) [jboss-modules.jar:1.3.3.Final]
	at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:134) [jboss-modules.jar:1.3.3.Final]
	at org.wildfly.extension.undertow.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:191)
	... 7 more

10:30:16,743 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) JBAS014613: Operation ("deploy") failed - address: ([("deployment" => "partition-1.0.0")]) - failure description: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"partition-1.0.0.war\"
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more from [Module \"deployment.partition-1.0.0.war:main\" from Service Module Loader]"}}
10:30:16,745 ERROR [org.jboss.as.server] (management-handler-thread - 2) JBAS015870: Deploy of deployment "partition-1.0.0.war" was rolled back with the following failure message: 
{"JBAS014671: Failed services" => {"jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"partition-1.0.0.war\"
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more from [Module \"deployment.partition-1.0.0.war:main\" from Service Module Loader]"}}
10:30:16,771 INFO  [org.hibernate.validator.internal.util.Version] (MSC service thread 1-3) HV000001: Hibernate Validator 5.1.0.Final
10:30:16,861 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment partition-1.0.0 (runtime-name: partition-1.0.0.war) in 116ms
10:30:16,862 INFO  [org.jboss.as.controller] (management-handler-thread - 2) JBAS014774: Service status report
JBAS014777:   Services which failed to start:      service jboss.deployment.unit."partition-1.0.0.war".INSTALL

[2017-09-20 10:30:16,907] Artifact partition:war exploded: Error during artifact deployment. See server log for details.
[2017-09-20 10:30:16,908] Artifact partition:war exploded: java.lang.Exception: {"JBAS014671: Failed services" => {"jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"partition-1.0.0.war\".INSTALL: JBAS018733: Failed to process phase INSTALL of deployment \"partition-1.0.0.war\"
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS017327: Deployment error processing SCI for jar: tomcat-embed-websocket-8.5.15.jar
    Caused by: java.lang.ClassNotFoundException: # Licensed to the Apache Software Foundation (ASF) under one or more from [Module \"deployment.partition-1.0.0.war:main\" from Service Module Loader]"}}
  • 原因:产生问题的原因是logback的jar冲突

  • 解决办法:有2种(可两种在一起使用):

  • 1、不使用spring-boot-starter-logging,由于该依赖会间接依赖很多log相关的jar,其中包含logback,版本为1.1.11,这个版本是跟JBoss8.1产生冲突的根本原因。

<dependency>
    <groupId>ch.qos.logback</groupId>
    <artifactId>logback-classic</artifactId>
    <version>1.1.9</version>
</dependency>

注意:此地方仅仅修改logback-classic的版本为1.1.9,不要修改logback-core的版本,logback版本为1.1.11。logback-classic内部依赖的logback-core的版本就是1.1.11。

  • 2、使用spring-boot-starter-logging,但是排除logback
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-logging</artifactId>
    <exclusions>
        <exclusion>
            <groupId>org.slf4j</groupId>
            <artifactId>log4j-over-slf4j</artifactId>
        </exclusion>
        <exclusion>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
        </exclusion>
    </exclusions>
</dependency>

参考网址

  • https://blog.csdn.net/runrun117/article/details/101026756?utm_medium=distribute.pc_relevant.none-task-blog-title-2&spm=1001.2101.3001.4242
  • https://blog.csdn.net/nullo_cns/article/details/50573643?utm_source=blogxgwz7

https://my.oschina.net/xulong1/blog/1538803?p=1

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

冰式的美式

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值