我通过Spring Boot中编写的侦听器使用JMS对象消息。我正在通过我的Camel应用程序将ObjectMessage发送到ActiveMQ队列,我正在Spring Boot应用程序中的侦听器类中侦听队列。
代码:
final BindyCsvDataFormat bindy = new BindyCsvDataFormat(EquityFeeds.class);
ConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://localhost:61616");
CamelContext _ctx = new DefaultCamelContext();
_ctx.addComponent("jms", JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));
_ctx.addRoutes(new RouteBuilder() {
public void configure() throws Exception {
from("file:src/main/resources?fileName=data.csv")
.unmarshal(bindy)
.split(body())
.streaming().to("jms:queue:javaobjects.upstream.queue");
}
});
这是我的POJO类EquityFeeds
:
@CsvRecord(separator = ",",skipFirstLine = true)
public class EquityFeeds implements Serializable {
private static final long serialVersionUID = 1L;
@DataField(pos = 1)
private String externalTransactionId;
@DataField(pos = 2)
private String clientId;
// other fields and getters setters
...
在ActiveMQ队列中,我收到的消息为:
camelproject.EquityFeeds@1665425
我在Spring Boot中的JMS侦听器:
@JmsListener(destination = "javaobjects.upstream.queue")
public void capitalIQProcessor(final Message objectMessage) throws JMSException {
Object messageData = null;
if(objectMessage instanceof ObjectMessage) {
ObjectMessage objMessage = (ObjectMessage) objectMessage;
System.out.println("Starting Object Message.");
Object object = objMessage.getObject();
EquityFeeds equityFeeds = (EquityFeeds) object;
System.out.println("Object: "+equityFeeds.toString());
}
}
我得到一个Exception@line对象对象=Object Message.getObject();
:
capitalIQProcessor(javax.jms.Message) throws javax.jms.JMSException' threw exception; nested exception is javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: camelproject.EquityFeeds. Caused by: javax.jms.JMSException: Failed to build body from content. Serializable class not available to broker. Reason: java.lang.ClassNotFoundException: camelproject.EquityFeeds. Caused by: java.lang.ClassNotFoundException: camelproject.EquityFeeds
通过堆栈溢出和网络上的其他帖子,我做了以下更改:
>
wrapper.java.classpath.3=C:\Users\sidbharg\eclipse workspace\Sid\target\camelproject-0.0.1-SNAPSHOT。jar
这是.jar文件的位置,我的POJO(EquityFeeds)在这里
在我的消费者代码中,我还添加了activeMQConnectionFactory.setTrustAllPackages(true) :
public ActiveMQConnectionFactory activeMQConnectionFactory() {
ActiveMQConnectionFactory activeMQConnectionFactory = new ActiveMQConnectionFactory();
activeMQConnectionFactory.setBrokerURL(brokerURL);
activeMQConnectionFactory.setTrustAllPackages(true);
return activeMQConnectionFactory;
}
现在问题是什么?为什么给我例外。我哪里出错了?有什么我忘记了需要补充的吗?
你需要一个项目。EquityFeeds在使用JMS的应用程序的类路径上。显然JVM找不到它,因此抛出了一个java.lang.ClassNotFoundException。
此外,您不需要对代理的wrapper.conf
进行这些更改。侦听器正在尝试反序列化消息,而不是代理。
问题内容: 我试图在我创建的特定Java类对象上列出方法列表,并尝试对其进行单元测试。 它无法说无法找到带有“ java.lang.ClassNotFoundException:类com.jr.freedom.user.User”的类。 这是测试代码: 我的项目包如下所示: 在项目文件夹中:src test User类位于src> com> jr?freedom> user(代表com.jr.fr
问题内容: 我正在学习Java并正在阅读这本书:https : //www.fca.pt/cgi- bin/fca_main.cgi/?op=2&isbn=978-972-722-791-4 。 在这本书中,我有一个Javaapplet练习。我可以在appletviewer中的Eclipse中运行它,并且运行良好。但是我无法将小程序集成到HTML中。 这是我的Java代码: 现在这是我的html代
我决定写RMI(从书中)也从书中获取代码。我用rmic创建了存根,并启动了rmiregistry,但当我决定编写java启动服务器时,我遇到了一个问题,实际上我面临的问题是:java-classpath D:\RMI AddServer Exception:java。马绍尔群岛共和国。ServerException:服务器线程中发生RemoteException;唯一的例外是:java。马绍尔群岛
我在使用以下简单示例时遇到了“ClassNotFound”异常的问题: 在本地模式下,按照文档提交会在第31行生成一个“ClassNotFound”异常,其中ClassToRoundTrip对象被反序列化。奇怪的是,前面28行的使用还可以: 但是,提交给本地开发人员主机仍然会产生相同的问题: 我可以从输出中看到JAR文件正在被执行器提取。 下面是其中一个执行程序的日志:
当我使用poi JAR在excel工作簿中写入一些数据时,代码中出现了以下异常: 我添加了以下罐子: > xmlbeans-2.4.0 poi-ooxml-schemas-3.11 poi-3.11 commons-logging-1.1 dom4j-1.6.1 log4j-1.2.17
我试图在Python3.4中创建一个ping服务器的函数。目前它只需要在Windows(可能是XP及以上)上工作。 我发现可以使用WMI Win32_PingStatus(Reference)类ping服务器,并编写了以下函数: 当您可以ping IP时,它返回True,当您不能ping IP时,它返回false。然而,每次运行它时,我都会在末尾出现一系列错误: 每次运行脚本时都会发生这种情况,尽