Spring Boot + CometD + Spring Security

作者分享了Spring Boot + CometD + Spring Security的整合过程,因项目版本与官方推荐不同,整合困难。介绍了几个有帮助的网址,附上关键代码,如Application.java、application.properties等,还提及处理jar包问题的方法,希望对相关人员有帮助。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

刚刚完成了Spring Boot + CometD + Spring Security 的整合, 真的是一个十分痛苦又绞尽脑汁的过程,国内外资料十分有限,而关于Spring Boot 和 CometD的整合,官方文档(https://docs.cometd.org/current4/reference/)推荐的是Spring Boot 2.0.X + CometD 4.0.X + Jetty. 这与我本身的项目差距甚远,我的项目是Spring Boot 1.5.19 + CometD 3.0.9 + Tomcat 8.5.37 + Spring Security 4.2.6. 在这一系列版本不改变的前提下,CometD works well.

在这过程中我用到了几个有帮助的网址:
(1)https://blog.youkuaiyun.com/wengdiquan/article/details/79361444
一位小伙伴写的tomcat 转 Spring Boot,有很大帮助。 奈何作者不在线,没办法请教交流。
(2)https://github.com/cometd/cometd/issues
这里是专业提问cometd相关问题的git地址,CometD的维护先生 sbordet 回复会很及时,感谢在我这段工作中 sbordet 先生提供的帮助。
(3)https://github.com/cometd/cometd/issues/865
这个是我的提问,最后面总结了我在这过程中遇到的一些问题,希望能对相关工作的小伙伴有所帮助。
下面附上一些关键代码:
Application.java

@SpringBootApplication
@ImportResource({ XML File......})
@ServletComponentScan
@ComponentScan
@EnableAutoConfiguration(exclude= { 
		DataSourceAutoConfiguration.class,
		JmsAutoConfiguration.class, 
		MongoAutoConfiguration.class, 
		MongoDataAutoConfiguration.class, 
		MultipartAutoConfiguration.class, 
		SecurityAutoConfiguration.class, 
		SecurityAutoConfiguration.class, 
		FallbackWebSecurityAutoConfiguration.class,
		OAuth2AutoConfiguration.class})
public class Application extends SpringBootServletInitializer implements ServletContextInitializer{
		@Override
		protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
			return application.sources(Application .class);
		}
		@Override
		public void onStartup(ServletContext servletContext) {
			ServletRegistration.Dynamic cometdServlet = servletContext.addServlet("cometd", AnnotationCometDServlet.class);
			cometdServlet.addMapping("/cometd/*");
			cometdServlet.setAsyncSupported(true);
			cometdServlet.setLoadOnStartup(1);
		}
}

application.properties
额外需要加的,我这里有一些jsp和js. 另外js放在src/main/resources/static 下面

spring.mvc.view.prefix=/WEB-INF/jsp/
spring.mvc.view.suffix=.jsp 

spring.mvc.static-path-pattern=/**

pom.xml
Remove websocket ,去掉所有跟websocket相关的,我这里会报错,class not found 之类的错误

<dependency>
				<groupId>org.cometd.java</groupId>
				<artifactId>cometd-java-websocket-javax-server</artifactId>
				<version>3.0.9</version>
</dependency>

Add 加入bayeux-api 这个jar包,这个jar包会自动包装在上面的wbesocket的包中,如果把websocket去掉就要单独引入这个包,这个是针对CometD 3.0.X, 在CometD 4.0.X 中取消了bayeux-api , CometD3 与 CometD4在某些方法和类上会有一些改动。

<dependency>
            <groupId>org.cometd.java</groupId>
            <artifactId>bayeux-api</artifactId>
</dependency>

因为我这里是多个Modules的工程,关于继承jar包以及jar包冲突遇到了很多很棘手的问题,这里提醒大家可以用mvn dependency : run的命令看jar包依赖关系。eclipse里pom.xml Dependencies 选项也能查看依赖关系。

在此过程中成长了很多,也收获了很多知识,希望这篇文章能对大家有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值