websocket采用tomcat方式,IOC类对象无法注入的解决方案
前言
我采用的spring框架做的,主要用于IOC AOP ,spring之前采用的2.0版本。(2.0版本出错!下面有解释); 要实现websocket 实现后台主动与JSP发送数据。
具体操作
在websocket类中 注解添加如下:
import org.springframework.web.socket.server.standard.SpringConfigurator;
//注解规定了访问的URL
@ServerEndpoint(value="/websocket",configurator = SpringConfigurator.class)
public class WebSocketServer {}
其中configurator = SpringConfigurator.class 这个表示让spring能扫描到该类,不加的话tomcat会自动启动该websocket类!
加上那句注解之后呢,就可以在websocket类中实现属性注入了。可以引入别的类了,以及使用被的类的方法了。
但是,出现了如下错误!
java.lang.NoSuchMethodError: org.springframework.web.context.ContextLoader.getCurrentWebApplicationC
这个错误是什么呢?
但是也可以采用另外一种方法引入xml,进行获取要使用的实例:
import org.springframework.web.context.ContextLoader;
WebApplicationContext webApplicationContext = ContextLoader.getCurrentWebApplicationContext();
ServletContext servletContext = webApplicationContext.getServletContext();
其中 ContextLoader.getCurrentWebApplicationContext(); 是引入的是spring.jar包中的(core包一般有的把core省略了,包含很多其他的方法,如hibernate方法),
这个方法ContextLoader.getCurrentWebApplicationContext(); 在spring.jar 2.0版本中不存在的,我翻了翻jar包仓库,发现到2.5.6版本sec03中有这个方法了
我是在这个地址看到的spring.jar (2.5.6)包的!http://repo.spring.io/release/org/springframework/spring/2.5.6.SEC03/
之后就可以把spring2.0包去掉了,换上这个包2.5.6sec03就可以了。 (注意mysql服务要确认开启!别到时候hibernate不好使了。)
关于websocket 采用注解指明URL,采用tomcat启动的方式来做:
除了spring2.5.6.jar包还有如下包:
javax.websocket-api-1.1.jar
spring-2.5.6.Sec03.jar
spring-websocket-4.3.0.RELEASE.jar
tomcat7-websocket-7.0.62.jar
总结
package service;
import org.springframework.web.socket.server.standard.SpringConfigurator;
import pojo.Goods;
import javax.websocket.OnClose;
import javax.websocket.OnError;
import javax.websocket.CloseReason;
import javax.websocket.EndpointConfig;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
//注解规定了访问的URL
@ServerEndpoint(value="/websocket",configurator = SpringConfigurator.class)
public class WebSocketServer {
//属性注入
private Goods goods;
private GoodsService goodsService;
public void setGoods(Goods goods) {
this.goods = goods;
}
public void setGoodsService(GoodsService goodsService) {
this.goodsService = goodsService;
}
public WebSocketServer(){
System.out.println("Socket Constructor!");
}
..........
}
javax.websocket-api-1.1.jar
spring-2.5.6.Sec03.jar
spring-websocket-4.3.0.RELEASE.jar
tomcat7-websocket-7.0.62.jar
this passage from https://www.cnblogs.com/zhaocundang/p/10057305.html
websocket采用tomcat方式,IOC类对象无法注入的解决方案的更多相关文章
- Spring实现Ioc的多种方式--控制反转、依赖注入、xml配置的方式实现IoC、对象作用域
Spring实现Ioc的多种方式 一.IoC基础 1.1.概念: 1.IoC 控制反转(Inversion of Control) IoC是一种设计思想. 2.DI 依赖注入 依赖注入是实现IoC的一 ...
- Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签
1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...
- 使用tomcat方式实现websocket即时通讯服务端讲解
使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...
- JavaScript 创建类/对象的几种方式
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...
- DELPHI XE2 采用 JSON 的方式来序列化对象
DELPHI XE2 采用 JSON 的方式来序列化对象 以下代码测试通过.问题是里面的中文,在反序列化后是乱码. 1. 序列化对象为字符串,Subject 里面的中文看起来正常,仍然是中文: 2. ...
- Objective-C 【类对象及SEL存储方式】
------------------------------------------- 类的本质--类对象 一段代码: #import <Foundation/Foundation.h> ...
- java采用zip方式实现String的压缩和解压缩CompressStringUtil类
CompressStringUtil类:不多说,直接贴代码: /** * 压缩 * * @param paramString * @return */ public static final byte ...
- spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象
相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...
- Android通过类对象的方式实现JSON数据的解析
1.通过主Activity的Button按钮实现数据的解析 public class MainActivity extends Activity { //定义一个包含Json格式的字符对象 priva ...
随机推荐
- BZOJ2647 : [Neerc2011]Journey
$|x|+|y|=\max(x+y,x-y,-x+y,-x-y)$,设$f[i][j]$表示在$(0,0)$,朝向方向$j$,执行第$i$条指令后的信息: $cir$:是否陷入循环 $d$:朝向 $x ...
- 3ds max学习笔记-- 复合对象运算
1,ProBoolean(超级布尔) 栗子: 新建一长方体,两个圆柱体,如下: 选择底部长方体,进入[复合对象],修改[操作],单击[拾取操作对象B],点击圆柱: 效果如下,线面较多: 高级布尔效果图 ...
- Listener(2)—案例
ServletContext的事件监听器,创建:当前web应用被加载(或重新加载)到服务器中,销毁:当前web应用被卸载 import javax.servlet.ServletContextEven ...
- ESP8266 NOOS SDK libat.a Functions
at_baseCmd.o custom_infoat_baseCmd.o at_exeCmdNullat_baseCmd.o at_setupCmdEat_baseCmd.o at_exeCmdRst ...
- SharePoint 读取内容的插件之SharepointPlus
前言 最近,一直在前端和SharePoint进行交互,然后,发现一个好用的插件,分享给大家. 首先,需要添加一个引用,如下图: 当然,我这里只是举个例子,亲们一定要去下载这个库,然后传到服务器或者文档 ...
- EChart配置
EChart配置 https://www.jianshu.com/p/3cf80b96a65d
- Gradle sync failed: /Applications/Android Studio.app/Contents/gradle/gradle-2.14.1/lib/plugins/gradle-diagnostics-2.14.1.jar (No such file or directory) Consult IDE log for more details (Help | Sh
上面出现的错误是,我从Android Studio 2.2 升级到2.3后,出现的问题, 找到方法: http://stackoverflow.com/questions/30526613/andro ...
- 重新认识 Delphi
一.彩蛋 1.打开 Delphi,选择"Help" –> "About-"菜单,出现 About 对话框. 2.在 About 窗口上按住 Alt 键盘, ...
- 【算法随记】Canny边缘检测算法实现和优化分析。
以前的博文大部分都写的非常详细,有很多分析过程,不过写起来确实很累人,一般一篇好的文章要整理个三四天,但是,时间越来越紧张,后续的一些算法可能就以随记的方式,把实现过程的一些比较容易出错和有价值的细节 ...
- AS使用lombok注解报错:Annotation processors must be explicitly declared now. The following dependencies on the compile classpath are found to contain annotation processor.
Rebuild时报错信息如下所示: Error:Execution failed for task ':app:javaPreCompileDebug'.> Annotation process ...