Camel大气websocket组件:无法从WebsocketHandler获取onOpen/onClose/onError事件
我正在集成websocket和camel,并选择现有的atmosphere websocket组件 我的步骤: 1) 添加到web.xmlCamel大气websocket组件:无法从WebsocketHandler获取onOpen/onClose/onError事件,websocket,apache-camel,atmosphere,Websocket,Apache Camel,Atmosphere,我正在集成websocket和camel,并选择现有的atmosphere websocket组件 我的步骤: 1) 添加到web.xml <!-- Camel servlet --> <servlet> <servlet-name>CamelWsServlet</servlet-name> <servlet-class>org.apache.camel.component.atmosphere.websocket.Ca
<!-- Camel servlet -->
<servlet>
<servlet-name>CamelWsServlet</servlet-name>
<servlet-class>org.apache.camel.component.atmosphere.websocket.CamelWebSocketServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<!-- Camel servlet mapping -->
<servlet-mapping>
<servlet-name>CamelWsServlet</servlet-name>
<url-pattern>/camel/*</url-pattern>
</servlet-mapping>
CamelWsServlet
org.apache.camel.component.atmosphere.websocket.CamelWebSocketServlet
1.
CamelWsServlet
/骆驼/*
2) 添加到spring applicationContext.xml
<bean id="websocketProcessor" class="mypackage.WebsocketProcessor" />
<camelContext id="main" xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="atmosphere-websocket:///chat"/>
<process ref="websocketProcessor"/>
</route>
</camelContext>
3) 使用chrome扩展连接到websocket,使用
url:ws://localhost:8080/MyApp/camel/chat
结果:
工作正常我可以连接和发送消息
但出于某种原因,我看到ApacheCamel2.16.0(CamelContext:main)已经启动了两次
但主要的一点是,我需要有自己的带有websocket会话密钥和用户对象的映射,因此我需要访问org.apache.camel.component.atmosphere.websocket.WebsocketHandler中的onOpen/onClose/onError方法
有什么建议我该怎么做?也许该组件应该扩展以支持此功能
谢谢,我修改了start web.xml上加载servlet的顺序,并将创建camel路由从spring上下文xml移动到Java,从而修复了两次启动camel的问题。唯一的问题是如何通知我的应用程序websocket事件onOpen/onClose/onError,这是在WebsocketHandler中发生的。作为实验,我使用这个建议来解决我的问题。但这是脏的。等待一些好的建议