备忘启动jetty后log中不断交替出现Connector vm://localhost Started/Stopped

在默认配置下,Activemq会根据topic/queue是否有数据来决定是否保持在内存中的存在,导致不断启动和停止。通过在Spring配置文件中添加<property name=cacheLevelName value=CACHE_CONNECTION/>,可以解决此问题。

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

启动jetty后log中不断交替出现Connector vm://localhost Started和Connector vm://localhost Stopped,这是activemq引发的问题。

问题的原因是在默认情况下,activemq只有当topic/queue有数据时候才会保持它在内存中的存在。所以当队列或者主题中没有数据时,activemq将不断进行启动和停止的操作。

要解决这一现象,必须在spring配置文件中的activemq的listenercontainer声明时,加上<property name="cacheLevelName" value="CACHE_CONNECTION"/>这句。
加上之后,重新启动,everything done。
如下所示:

<bean id="queueListenerContainer"
class="org.springframework.jms.listener.DefaultMessageListenerContainer">
<property name="cacheLevelName" value="CACHE_CONNECTION"/>
<property name="connectionFactory" ref="jmsConnectionFactory" />
<property name="destination" ref="QUEUE" />
<property name="messageListener" ref="queueListener" />
<property name="transactionManager" ref="jmsTransactionManager" />
<!-- 使用外部事务管理器时设置为true,默认false -->
<property name="sessionTransacted" value="true" />
<property name="concurrency" value="1-100" />



参考资料:
http://forum.springsource.org/showthread.php?86482-ActiveMQ-infinitive-loop-Connector-start-stop
### 解决 Java NoClassDefFoundError Jetty RequestLog Writer 类未找到的问题 当遇到 `java.lang.NoClassDefFoundError: org/eclipse/jetty/server/RequestLog$Writer` 错误时,这通常意味着应用程序在运行期间找不到指定的类文件。此类问题通常是由于缺少必要的库或依赖项引起的。 #### 1. 检查 Maven 或 Gradle 配置中的依赖关系 如果使用的是Maven构建工具,则应确保项目的pom.xml文件中包含了Jetty服务器及其日志组件的相关依赖。对于Gradle项目,应在build.gradle文件中添加相应的依赖声明[^2]。 ```xml <!-- pom.xml --> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-server</artifactId> <version>${jetty.version}</version> </dependency> <dependency> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-util</artifactId> <version>${jetty.version}</version> </dependency> ``` ```groovy // build.gradle dependencies { implementation 'org.eclipse.jetty:jetty-server:${jettyVersion}' implementation 'org.eclipse.jetty:jetty-util:${jettyVersion}' } ``` #### 2. 清理和重新安装本地仓库缓存 有时本地Maven或Gradle仓库可能会损坏,导致某些JAR包未能正确下载。可以尝试清理这些缓存并强制刷新依赖: - 对于Maven, 使用命令 `mvn clean install -U` - 对于Gradle, 可以删除 `.gradle/caches/modules-2/files-2.1/org.eclipse.jetty/*` 文件夹后再执行同步操作 #### 3. 更新IDE配置 即使所有必需的依赖都已存在于POM或Build脚本当中,在开发环境中仍然可能出现无法识别的情况。此时建议重启集成开发环境(IDE),如Eclipse,并让其自动解析新的依赖关系;或者手动调整Project Structure设置以包含所需的外部库[^3]。 #### 4. 排除潜在冲突 如果有多个不同版本的Jetty库共存于同一个classpath之下,那么也有可能引发类似的异常。因此应当仔细审查整个项目的依赖树结构,移除不必要的重复条目,并保持一致性的版本号。 #### 5. 调整应用容器的选择 根据描述提到的信息来看,如果没有Spring Boot插件的话,默认情况下启动主程序将会采用Jetty作为内嵌Web Server。然而并不是所有的场景都需要如此复杂的服务端实现方式。考虑切换至其他轻量级替代方案(比如Tomcat),也许能够简化问题排查过程[^5]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值