我正在尝试通过vswhere
文件将我们的应用程序部署到新服务器(RHEL 6.9)上的Tomcat中,并遇到war
。我们已经在其他现有服务器上部署了相同的应用程序版本,并且在这些服务器上没有问题。
这是一台新服务器,我们将首次部署此java.lang.NoClassDefFoundError: com/ibm/security/certclient/util/PkSsCertFactory
。
我们在war
下确实有一些自定义库,并确保其下的jar文件版本与我们现有的其他服务器相同。
为了提供更多上下文,该应用程序与其他EJB应用程序进行了对话,提到的bean ApplicationNameServiceMonitor 用于检查与其中一个EJB应用程序的连接。
我试图获取包含此类的jar文件并对其进行深入研究以进行进一步的故障排除,同时考虑将问题发布到此处以寻求帮助。
以下是详细信息:
Tomcat版本:8.0.x
Java主页:*** / Tomcat8 / reference / jdk1.7.0_121 / jre
JVM版本:1.7.0_121-b32
包含此bean的Spring应用程序上下文文件>> resources / appcheck / monitor.xml
***/Tomcat8/catalinabasedirs/catalinabase0/customlib
Stacktrace
<beans profile="xyz,abc,applicationname">
<bean id="ApplicationNameServiceMonitor" class="com.mycomany.bbs.group.xy.monitor.MonitorFactory" factory-method="createMonitor" init-method="registerMonitor" c:type="wasejb">
<property name="disable" value="${applicationnameservice.monitor.disable}" />
<property name="service" value="${applicationnameservice.name}" />
<property name="contextFactory" value="${applicationnameservice.ejb.jndi.factory}" />
<property name="url" value="${applicationnameservice.ejb.jndi.url}" />
<property name="version" value="#{'${applicationnameservice.ejb.address}'.substring(8,16).replace('/','.') + '${applicationnameservice.ejb.address}'.substring(16)}" />
<property name="ejbs" value="#{'${applicationnameservice.monitor.services}'.split(',')}" />
<property name="monitorSecurityConfig" ref="monitorSecurityConfigBean"/>
</bean>
</beans>
答案 0 :(得分:0)
解决了问题。事实证明这是完全不同的问题。在 jvm参数中被称为 keystore 和 truststore 的 jks文件的路径不正确,并且这导致代码流经过特殊的场景,在这种场景下,它试图加载某些类(这就是我得出的结论),而缺少的jar导致了异常。由于上述jar的pom依赖关系被指定为provided
,因此它在构建等过程中从不抱怨,并且仅在发生此特定情况时失败。