您好,我需要将我的Spring Boot应用程序部署到Wildfly 8.1中,我遇到以下异常:
原因:java。RuntimeException:java。lang.ClassCastException:组织。阿帕奇。公猫websocket。服务器WsServerContainer无法转换为io。下拖。websockets。jsr。io上的ServerWebSocketContainer。下拖。servlet。果心DeploymentManagerImpl。在组织上部署(DeploymentManagerImpl.java:219)。野蝇。扩大下拖。部署。在部署服务下。位于org的startContext(UndertowDeploymentService.java:87)。野蝇。扩大下拖。部署。在部署服务下。在org上启动(UndertowDeploymentService.java:72)。jboss。理学硕士。服务ServiceControllerImpl$StartTask。startService(ServiceControllerImpl.java:1948)[jboss-msc-1.2.2.Final.jar:1.2.2.Final]位于org。jboss。理学硕士。服务ServiceControllerImpl$StartTask。运行(ServiceControllerImpl.java:1881)[jboss-msc-1.2.2.Final.jar:1.2.2.Final]。。。3更多原因:java。lang.ClassCastException:组织。阿帕奇。公猫websocket。服务器WsServerContainer无法转换为io。下拖。websockets。jsr。io上的ServerWebSocketContainer。下拖。websockets。jsr。Bootstrap$WebSocketListener。contextInitialized(Bootstrap.java:69)位于io。下拖。servlet。果心应用程序侦听器。contextInitialized(ApplicationListeners.java:173)位于io。下拖。servlet。果心DeploymentManagerImpl。部署(DeploymentManagerImpl.java:190)。。。7个以上
似乎我的webockets和消息传递设置可能是罪魁祸首?我正在看这个https://github.com/joshlong/boot-examples/issues/2提出的解决方案似乎都不适合我。以下是我的pom的依赖项:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.1.6.RELEASE</version>
</parent>
<dependencies>
<!--Testing-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>${apache.httpcomponents.version}</version>
</dependency>
<!-- Spring -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-messaging</artifactId>
</dependency>
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf-spring4</artifactId>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
</dependency>
<!--Database-->
<dependency>
<groupId>org.hsqldb</groupId>
<artifactId>hsqldb</artifactId>
<version>2.3.1</version>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901.jdbc4</version>
</dependency>
</dependencies>
我也尝试过使用direct spring boot starter websocket,但得到了同样的结果。这也是我的websocket配置:
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractWebSocketMessageBrokerConfigurer{
@Override
public void configureMessageBroker(MessageBrokerRegistry registry) {
super.configureMessageBroker(registry);
registry.enableSimpleBroker("/ssp");
registry.setApplicationDestinationPrefixes("/inc");
}
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
registry.addEndpoint("/update/applications");
}
}
感谢您抽出时间阅读本文。我将不胜感激。此外,这是我的第一个启动应用程序。:/
我不确定,但您在websockets周围的POM应该是这样的:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
<scope>provided</scope>
</dependency>
spring messaging、spring websocket、jackson databind、spring boot starter web都是冗余的。
还有Spring启动装置thymeleaf。
然而,我认为您的原因是tomcat嵌入websocket。
spring-boot-starter-web和spring-boot-starter-websocket默认包含spring-boot-starter-tomcat,因此排除tomcat,如下所示
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
<version>${spring-boot.version}</version>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
并包括undertow,确保tomcat在类路径中不存在。
你需要排除tomcat-embed-websocket
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-websocket</artifactId>
</exclusion>
</exclusions>
</dependency>
考虑下面的结构:代码> JBASS部署结构。ear的xml内部 鉴于此,我排除了default部署模块(第11行)和部署自定义位于文件夹或ear中。我还为子部署。 xerces类将从何处加载?从WildFly的默认模块或部署在中的自定义jar? 在子部署中添加路径依赖项的确切含义是什么?这会忽略主部署下的排除(即,org.apache.xerces)吗?
WildFly,原名 JBoss AS(JBoss Application Server) 或者 JBoss,是一套应用程序服务器,属于开源的企业级 Java 中间件软件,用于实现基于 SOA 架构的 Web 应用和服务。 WildFly 包含一组可独立运行的软件。 WildFly采用积极的方法进行内存管理。开发基本运行时服务是为了最大程度地减少堆分配。这些服务在重复的完整解析中使用公共的缓存索引
我正在使用Java8构建我的应用程序,并计划使用JBoss EAP 7.1.0进行生产部署,但我没有得到JBoss EAP 7.1.0附带的Wildfly版本。我找到了Wildfly核心3.0.1,但什么是Wildfly核心? 还建议将JBoss EAP 6.4的Java版本更新到Java8并使用它吗?
我的所有应用程序文件都是使用UTF-8创建的,但WildFly将它们作为ISO-8859-1提供服务。 null
我想在处理不同的回调时,主体应该由ServerAuthenticationContext创建,对吗? 如何管理SimpleSecurityManager能够识别主体,是否需要在身份验证机制中创建主体,以及如何创建主体?
WildFly Monitor 是 WildFly 的一个子系统,可以将收集的 WildFly 监控和统计数据发送到 RHQ Metrics 服务器。