Springboot 与 RestEasy 集成并部署到 Jboss 服务器



我想将Spring启动与RestEasy集成。 我通过参考链接开始使用PayPal Springboot 启动器

我已经添加了PayPal上面的链接中提到的安宁依赖关系。 但是在部署到 Jboss 服务器时,我收到以下错误:

Caused by: java.lang.NoClassDefFoundError: org/jboss/resteasy/spi/NotImplementedYetException
at java.lang.Class.getDeclaredConstructors0(Native Method) [rt.jar:1.8.0_131]
at java.lang.Class.privateGetDeclaredConstructors(Unknown Source) [rt.jar:1.8.0_131]
at java.lang.Class.getConstructor0(Unknown Source) [rt.jar:1.8.0_131]
at java.lang.Class.newInstance(Unknown Source) [rt.jar:1.8.0_131]
at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.loadSci(ServletContainerInitializerDeploymentProcessor.java:194)
at org.jboss.as.web.deployment.ServletContainerInitializerDeploymentProcessor.deploy(ServletContainerInitializerDeploymentProcessor.java:131)

有人可以建议我将Springboot与RestEasy集成的最佳方式吗?

这似乎是两个独立的问题:如何集成 RESTEasy,以及如何部署到 JBoss。

RESTEasy:你提到的RESTEasy的PayPal启动器已经转移到新家。 https://github.com/resteasy/resteasy-spring-boot/blob/master/mds/USAGE.md 最新版本运行良好。(我不知道自从您使用的版本以来发生了什么变化。

JBoss:将自托管的 Spring Boot 应用程序转换为在 JBoss 上运行的应用程序需要几个步骤,从您的文章中不清楚您已经进行了哪些更改。

1(在你的绒球.xml中,将包装从罐子改为战争。

2( 同样在 pom.xml 中,从任何试图引入它的依赖项中排除 spring-boot-starter-tomcat。通常这是弹簧-引导-启动器-网络,但如果您使用的是 resteasy-spring-boot-starter,您将从中排除。

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

3(改变main类,使其扩展SpringBootServletInitializer

4(同样在main覆盖configure方法。(有些文章省略了这一步 - 它与确保正确扫描组件有关,因此可能有办法配置项目,因此它是可选的。

public class NameOfMyMainClass extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(NameOfMyMainClass.class);
}
public static void main(String[] args) {
SpringApplication.run(NameOfMyMainClass.class, args);
}
}

这些步骤详细写在这里:https://thepracticaldeveloper.com/2018/08/06/how-to-deploy-a-spring-boot-war-in-wildfly-jboss/

从理论上讲,这就是您所需要的。但在实践中,我从来没有让它工作过(Spring Boot 2.0.4,JBoss 7.1(。

第一个问题:Spring Boot 2 显然需要 JBoss 7。直到我浪费了一些时间在 JBoss 6 上之后,我才知道这一点。 第二个问题:即使在升级服务器之后,我的 JAX-RS bean 也从未工作过。根据以下文章,JBoss 7.1.1 没有完全集成,需要一些额外的解决方法:https://ilya-murzinov.github.io/articles/spring-boot-jboss/

有些文章声称成功,但请注意,他们倾向于使用Wildfly,而不是JBoss。(JBoss 7.0 也可能没有所有这些问题。因此,如果您正在关注这些文章之一,请确保它们使用的是您可以使用的 Spring Boot 和 JBoss 版本。

最新更新