前言

我采用的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类对象无法注入的解决方案的更多相关文章

  1. Spring实现Ioc的多种方式--控制反转、依赖注入、xml配置的方式实现IoC、对象作用域

    Spring实现Ioc的多种方式 一.IoC基础 1.1.概念: 1.IoC 控制反转(Inversion of Control) IoC是一种设计思想. 2.DI 依赖注入 依赖注入是实现IoC的一 ...

  2. Spring IOC - 控制反转(依赖注入) - 入门案例 - 获取对象的方式 - 别名标签

    1. IOC - 控制反转(依赖注入) 所谓的IOC称之为控制反转,简单来说就是将对象的创建的权利及对象的生命周期的管理过程交 由Spring框架来处理,从此在开发过程中不再需要关注对象的创建和生命周 ...

  3. 使用tomcat方式实现websocket即时通讯服务端讲解

    使用tomcat方式实现websocket即时通讯服务端讲解 第一种方案:使用Tomcat的方式实现 tomcat版本要求:tomcat7.0+.需要支持Javaee7 导入javeee-api的ja ...

  4. JavaScript 创建类/对象的几种方式

    在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...

  5. DELPHI XE2 采用 JSON 的方式来序列化对象

    DELPHI XE2 采用 JSON 的方式来序列化对象 以下代码测试通过.问题是里面的中文,在反序列化后是乱码. 1. 序列化对象为字符串,Subject 里面的中文看起来正常,仍然是中文: 2.  ...

  6. Objective-C 【类对象及SEL存储方式】

    ------------------------------------------- 类的本质--类对象 一段代码: #import <Foundation/Foundation.h> ...

  7. java采用zip方式实现String的压缩和解压缩CompressStringUtil类

    CompressStringUtil类:不多说,直接贴代码: /** * 压缩 * * @param paramString * @return */ public static final byte ...

  8. spring练习,在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXmlApplicationContext实体类获取Bean对象

    相关 知识 >>> 相关 练习 >>> 实现要求: 在Eclipse搭建的Spring开发环境中,使用set注入方式,实现对象的依赖关系,通过ClassPathXm ...

  9. Android通过类对象的方式实现JSON数据的解析

    1.通过主Activity的Button按钮实现数据的解析 public class MainActivity extends Activity { //定义一个包含Json格式的字符对象 priva ...

随机推荐

  1. BZOJ1439 : YY的问题

    考虑容斥,枚举哪些不存在的边选中了,剩下的不管,则可以用组合数计算方案数. 时间复杂度$O(m2^m+nm)$. #include<cstdio> const int N=550,B=10 ...

  2. BZOJ2042 : [2009国家集训队]Will的烦恼

    不难发现题中过程对应着动态维护关于$C$的最大生成树. 为了让$D$最大,同时让字典序最大,那么最后得到的一定是按$pair(C,D,编号)$排序的最大生成树. 对于每条非树边$(u,v,C)$,那么 ...

  3. windows安装并使用Anaconda

    前言 本意是要使用Jupyter(Jupyter官网地址),在Jupyter官网上看到,强烈建议新手使用Anaconda,于是开始下载Anaconda使用.Anaconda是用于管理开源包(packa ...

  4. 【C语言程序】让用户输入十个数,用冒泡排序法从小到大排序

    #include <stdio.h> #define N 10 void swap(int*a,int*b); int main(int argc, char *argv[]) {  in ...

  5. django中数据库操作有关部分

    # >>>>>>>>>>>>>>>>>>>>>>>>&g ...

  6. JAVA自学作业02

    JAVA自学作业02 1.什么是标识符?由哪些部分组成?常见的命名规则有哪些? 标识符是用户为变量的内存空间所定义的字符序列: 可以由字母.下划线.美元符号以及数字组成,但数字不可作为首字符.标识符不 ...

  7. java static learning

    /*static learning */ class one { public int a = 5; static { // 类加载时就运行代码码 System.out.println("s ...

  8. [MySQL]查看用户权限与GRANT用法

    摘自:http://apps.hi.baidu.com/share/detail/15071849 查看用户权限 show grants for 你的用户 比如:show grants for roo ...

  9. CSS魔法堂:Transition就这么好玩

    前言  以前说起前端动画必须使用JS,而CSS3为我们带来transition和@keyframes,让我们可以以更简单(声明式代替命令式)和更高效的方式实现UI状态间的补间动画.本文为近期对Tran ...

  10. AxWindowsMediaPlayer控件的使用

    首先要知道如何将控件添加到工具箱中,步骤如下: “工具箱”中单击右键,选择“选择项”菜单,打开“选择工具箱项”窗口,选择“COM组件”标签,在列表中找到并勾选“Windows Media Player ...