spring启动应用程序在添加jnpclient maven依赖项时卡住

2lpgd968  于 2021-07-13  发布在  Java
关注(0)|答案(0)|浏览(223)

我需要加载位于jboss服务器中的jndi资源。为此,我使用jnp客户端库:

<dependency>
  <groupId>jboss</groupId>
  <artifactId>jnp-client</artifactId>
  <version>4.2.2.GA</version>
</dependency>

问题是,只要我在pom.xml中包含这个依赖项,spring应用程序就会在启动时卡住,没有任何消息。没有一行日志,就像它试图永远加载某个东西一样。甚至没有调用main。在应用程序运行时删除此依赖项,但我得到预期的:

ClassNotFoundException: org.jnp.interfaces.NamingContextFactory

这是正常的,因为我已经删除了包含这个类的依赖关系。
有什么线索吗?我已经尝试了所有版本的jnp客户端或jbossall客户端,其中也包括这个namingcontextfactory
编辑:
不幸的是,这两个依赖项的组合是从所需依赖项继承的:

<dependency>
        <groupId>org.jboss.naming</groupId>
        <artifactId>jnp-client</artifactId>
    </dependency>

里面还有spring webmvc

<dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

如果我和你一起跑

<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-web</artifactId>
   <exclusions>
     <exclusion>
       <groupId>org.springframework</groupId>
       <artifactId>spring-webmvc</artifactId>
     </exclusion>
   </exclusions>
 </dependency>

很好用。
现在,如果我排除jnp客户机,我就不能访问jndi资源,但是如果我删除springsecurityweb,我就不能访问这个服务公开的其余内点。
编辑2:
所以我认为可能是两个类相互干扰,于是我用-verbose启动了java进程。这就是我发现的。
org.springframework.boot.context.config.configfileapplicationlistener$loader$$lambda$165/0x00000001002d8440来源:org.springframework.boot.context.config.configfileapplicationlistener$loader[389.020s][info][class,load]org.springframework.boot.context.config.configfileapplicationlistener$loader$$lambda$166/0x00000001002d8840来源:org.springframework.boot.context.config.configfileapplicationlistener$loader[558.011s][info][class,load]org.springframework.boot.context.config.configfileapplicationlistener$loader$$lambda$167/0x00000001002d8c40来源:org.springframework.boot.context.config.configfileapplicationlistener$loader[558.012s][info][class,load]org.springframework.boot.context.config.configfileapplicationlistener$loader$$lambda$168/0x00000001002d9040来源:org.springframework.boot.context.config.configfileapplicationlistener$loader
应用程序有时仅以详细形式打印此configfileapplicationlistener$loader
编辑3:
问题似乎是jnp客户机内部的timedsocketfactory。不知何故,只要将这个类放在jnp客户机依赖项中,spring应用程序就会被阻塞并且永远不会启动。从jnp客户机中删除这个允许应用程序启动。当然,它稍后会失败,因为jndi无法连接到服务器。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题