记一次Cannot deploy POJO class [xxx$$EnhancerBySpringCGLIB$$xxx]的错误

最近项目上需要使用websocket做服务端,那好说啊,直接springboot集成的websocket

引入依赖

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
    <version>2.7.12</version>
</dependency>

配置类

@Configuration
public class WebsocketConfig {

	@Bean
	public ServerEndpointExporter serverEndpointExporter() {
		return new ServerEndpointExporter();
	}
}

wsServer

@Component
@Slf4j
@ServerEndpoint("/ws/{id}")
public class WebsocketServer {

	/**
	 * 在线的连接
	 */
	private Map<String, Session> onlineSessionMap = new ConcurrentHashMap<>();

	@OnOpen
	public void onOpen(@PathParam("id") String id, Session session) {
		log.info("WebSocket连接成功,id = {}", id);
		onlineSessionMap.put(id, session);
	}

	@OnClose
	public void onClose(@PathParam("id") String id, Session session) {
		log.info("WebSocket连接关闭,id = {}", id);
		onlineSessionMap.remove(id);
	}


	@OnMessage
	public void onMessage(String message, Session session) {
		log.info("WebSocket接收到客户端消息:{}", message);

	}

	@OnError
	public void onError(Session session, Throwable error) {
		log.error("WebSocket发生错误,错误信息为:{}", error.getMessage());
	}

	public void sendMessage(String id, String message) {
		Session session = onlineSessionMap.get(id);
		if (session == null) {
			log.error("WebSocket发送消息失败,未找到对应的连接,id = {}", id);
			return;
		}
		// 异步发送消息
		try {
			session.getAsyncRemote().sendText(message);
			log.info("WebSocket发送消息成功,id = {},message = {}", id, message);
		} catch (Exception e) {
			log.error("WebSocket发送消息失败,错误信息为:{}", e.getMessage());
		}

	}
}

本来以为简简单单搞定,准备启动,结果...

Cannot deploy POJO class [com.xxx.xxx.xxx.WebsocketServer$$EnhancerBySpringCGLIB$$e1de9f9b] as it is not annotated with @ServerEndpoint

wtf??

之前没遇到过这种情况啊,没事 我有谷歌

看了下网上的情况 好像说因为这个类被代理了,追了下源码,确实是这样的

那好说啊 直接全局搜索 @Aspect

结果发现项目中的aop都是通过注解去切的 那这是怎么回事,明明我这个类也被动态代理了

此时我也快将谷歌翻烂了,仍然找不到办法解决

等一下? 会不会是其他的AOP,比如某些框架的 @Aspect 搜不到,那我换个搜法 

直接全局搜索 pointcut

这时我看到这样一个配置文件

Druid数据监控的数据监控啊! TMD甘

问题找到了 可是怎么降这个包排除呢

<property name ="patterns">

直接按住command 点击patterns

进入了方法

再点击this.patterns 

思路顿时明了了

直接在下面加一个 排除ws的包

启动成功

相关推荐

  1. Python matplotlib使用ffmpeg和imagemagick错误

    2024-04-05 16:40:06       26 阅读
  2. jar冲突问题

    2024-04-05 16:40:06       62 阅读
  3. 关于指针错误调用

    2024-04-05 16:40:06       34 阅读
  4. 面试题

    2024-04-05 16:40:06       49 阅读
  5. 面试经历

    2024-04-05 16:40:06       51 阅读
  6. nodeBB部署

    2024-04-05 16:40:06       26 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-05 16:40:06       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-05 16:40:06       100 阅读
  3. 在Django里面运行非项目文件

    2024-04-05 16:40:06       82 阅读
  4. Python语言-面向对象

    2024-04-05 16:40:06       91 阅读

热门阅读

  1. 基于SpringBoot + Vue 的电影售票及影院管理系统

    2024-04-05 16:40:06       34 阅读
  2. 【C脚本】计算PCM的DBFS(分贝全尺度)

    2024-04-05 16:40:06       38 阅读
  3. 领地选择

    2024-04-05 16:40:06       39 阅读
  4. test000000

    2024-04-05 16:40:06       38 阅读
  5. LLM记录1

    2024-04-05 16:40:06       38 阅读
  6. 【C++算法】 卡常技巧

    2024-04-05 16:40:06       48 阅读
  7. Python程序设计 垃圾回收机制&鸭子类型

    2024-04-05 16:40:06       31 阅读