急!SpringBoot中WebSocket与pentaho的jar包冲突的问题,求大牛指导!

qq_37434654 2017-02-09 12:05:28
框架是SpringBoot,最初写好WebSocket时是正常可以用的;后期由于pentaho引入jar包后就报错了,不知道是什么原因。如果将pentaho的jar包从pom.xml中删除掉,WebSocket还是好用的,如果不删除的话,程序无法启动报错,这个问题有大牛知道吗?

下面附上pom.xml中冲突的jar包,报错信息及config里面的出错引入

pom.xml中冲突的jar包

<dependency>
<groupId>pentaho-kettle</groupId>
<artifactId>kettle-engine</artifactId>
<version>7.0.0.3-59</version>
</dependency>


config里面的出错引入:貌似是无法注入ServerEndpointExporter

package com.nantian.yama.springboot.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.socket.server.standard.ServerEndpointExporter;

@Configuration
public class WebSocketConfig {
@Bean
public ServerEndpointExporter aaaserverEndpointExporter (){
return new ServerEndpointExporter();
}
}


控制台的报错信息

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'yama': Invocation of init method failed; nested exception is java.lang.IllegalStateException: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e75aa0d has not been refreshed yet
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.context.event.AbstractApplicationEventMulticaster.retrieveApplicationListeners(AbstractApplicationEventMulticaster.java:228)
at org.springframework.context.event.AbstractApplicationEventMulticaster.getApplicationListeners(AbstractApplicationEventMulticaster.java:185)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:125)
at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:119)
at org.springframework.boot.context.event.EventPublishingRunListener.publishEvent(EventPublishingRunListener.java:111)
at org.springframework.boot.context.event.EventPublishingRunListener.finished(EventPublishingRunListener.java:98)
at org.springframework.boot.SpringApplicationRunListeners.callFinishedListener(SpringApplicationRunListeners.java:79)
at org.springframework.boot.SpringApplicationRunListeners.finished(SpringApplicationRunListeners.java:72)
at org.springframework.boot.SpringApplication.handleRunFailure(SpringApplication.java:814)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:304)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101)
at com.nantian.yama.springboot.YamaApplication.main(YamaApplication.java:22)
Caused by: java.lang.IllegalStateException: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@6e75aa0d has not been refreshed yet
at org.springframework.context.support.AbstractApplicationContext.assertBeanFactoryActive(AbstractApplicationContext.java:1038)
at org.springframework.context.support.AbstractApplicationContext.getBeanNamesForType(AbstractApplicationContext.java:1152)
at org.apache.camel.spring.CamelContextFactoryBean.getBeanForType(CamelContextFactoryBean.java:207)
at org.apache.camel.core.xml.AbstractCamelContextFactoryBean.afterPropertiesSet(AbstractCamelContextFactoryBean.java:156)
at org.apache.camel.spring.CamelContextFactoryBean.afterPropertiesSet(CamelContextFactoryBean.java:262)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 19 more
2017-02-09 12:45:50,324 ERROR [main] [org.springframework.boot.SpringApplication 826] - Application startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'aaaserverEndpointExporter' defined in class path resource [com/nantian/yama/springboot/config/WebSocketConfig.class]: Invocation of init method failed; nested exception is java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1578)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:545)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:482)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:772)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:838)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:537)
at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:118)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752)
at org.springframework.boot.SpringApplication.doRun(SpringApplication.java:347)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:295)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1112)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1101)
at com.nantian.yama.springboot.YamaApplication.main(YamaApplication.java:22)
Caused by: java.lang.IllegalStateException: javax.websocket.server.ServerContainer not available
at org.springframework.util.Assert.state(Assert.java:392)
at org.springframework.web.socket.server.standard.ServerEndpointExporter.afterPropertiesSet(ServerEndpointExporter.java:102)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1637)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1574)
... 16 more


最后附上springboot参考的websocket写法的链接,我就是参考这个做的,但是不知道为什么加入了pentaho后就报错了,没加入pentaho时还是好用的。
http://zk-chs.iteye.com/blog/2285329

求大牛指导下,怎么解决这个问题,困扰了我好久

...全文
437 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_37434654 2017-02-10
  • 打赏
  • 举报
回复
引用 3 楼 qq_35100747 的回复:
他写的我试了可以用。。。简单的demo
我没说这个不好用......这个websocket还是可以用的,只是当你引入pentaho的jar包后冲突,导致了websocket出现问题。1楼的解决方案是正确的,我昨天按照1楼的方案已经成功的解决了。感谢1楼,也同时感谢3楼的指导。如果有碰到和我类似问题的,按照这种方式是可以解决的。最后附上pom.xml中的移除部分jar包的代码。

<dependency>
		   <groupId>pentaho-kettle</groupId>
		   <artifactId>kettle-engine</artifactId>
		   <version>7.0.0.3-59</version>
		   <exclusions>
		   	<exclusion>
		   		<groupId>javax.servlet</groupId>
		   		<artifactId>javax.servlet-api</artifactId>
		   	</exclusion>
		   	<exclusion>
		   		<groupId>org.eclipse.jetty</groupId>
		   		<artifactId>jetty-server</artifactId>
		   	</exclusion>
		   </exclusions>
		</dependency>
qq_35100747 2017-02-09
  • 打赏
  • 举报
回复


<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.1.RELEASE</version>
</parent>
<!--web应用基本环境配置 -->
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-websocket</artifactId>
</dependency>
</dependencies>
qq_35100747 2017-02-09
  • 打赏
  • 举报
回复
他写的我试了可以用。。。简单的demo
qq_37434654 2017-02-09
  • 打赏
  • 举报
回复
引用 1 楼 defonds 的回复:
你先找到是哪个包冲突的,然后在 pom 文件里将其中一个 exclude 掉
但是这两个jar包都必不可少啊
Defonds 2017-02-09
  • 打赏
  • 举报
回复
你先找到是哪个包冲突的,然后在 pom 文件里将其中一个 exclude 掉

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧