当前位置: 首页 > 知识库问答 >
问题:

在外部ActiveMQ中的@MessageDriven bean中定义setTrustAllPackages=true的位置

羊舌诚
2023-03-14

我正在使用外部ActiveMQ(5.15.10)进行发布-订阅。我的应用程序部署在TomEE 8.0.1服务器上,ActiveMQ配置在tomee.xml.

我能够成功发布消息,但在接收消息时面临问题。在onMessage方法中,我需要处理一个pojo,我得到以下错误

"不信任将此类序列化为ObjectMessage有效负载"

我在我的应用程序中使用Eclipse Link JPA,我需要将我在onMessage方法中收到的pojo发送到我的@Statless bean(这里是UserService)以进一步处理它。因此,UserService在我下面的MDBSubscriber类中注入了@EJB注释。

@MessageDriven(
        activationConfig = { 
            @ActivationConfigProperty(
                    propertyName = "destinationType", 
                    propertyValue = "javax.jms.Queue"),
            @ActivationConfigProperty( 
                    propertyName = "destination", 
                    propertyValue = "userQueue")
            
        }
    )

public class MDBSubscriber implements MessageListener {
    
    @EJB
    UserService uService; 
    
    public void onMessage(Message msg) {    
    
        if(msg instanceof ObjectMessage) {
            ObjectMessage objMsg = (ObjectMessage) msg;
            UserForm uForm=  (UserForm) objMsg.getObject();
            ----
            ----
            uService.process(uForm);
        }
     }
}

当我阅读ActiveMQ文档时,它说可以在ActiveMQConnectionFactory对象上设置setTrustAllPackages=true,但由于我使用@MessageDriven Bean,我在上面定义的类中没有ActiveMQConnectionFactory对象。

所以,我的问题是,在@MessageDriven Bean中,我们在哪里或如何定义setTrustAllPackages=true?

我被这个问题困扰了10多天,找不到解决办法。有人能帮我吗?

共有1个答案

易炳
2023-03-14

您也可以通过系统属性进行配置,该属性避免了trustAllPackages连接工厂选项。ActiveMQ站点上已有相关文档。

如果您想简化此机制,您可以使用*通配符允许信任所有包,例如

-Dorg.apache.activemq.SERIALIZABLE_PACKAGES=*
 类似资料:
  • 我有许多swagger文件,使用相同的定义。我想将此定义移动到单独的文件并引用它们。 主 swagger 文件如下所示: 我尝试导入的文件已保存到 exceptions.yaml(并保存到同一位置),如下所示: 我读过$refhttps://swagger.io/docs/specification/using-ref/但找不到如何导入定义,而不是API 我正在尝试导入它,并做了以下更改: 或者使

  • 外部定义 有时候创建一个由多个不同检出得到的工作拷贝是非常有用的,举个例子,你或许希望不同的子目录来自不同的版本库位置,或者是不同的版本库。你可以手工设置这样一个工作拷贝—使用svn checkout来创建这种你需要的嵌套的工作拷贝结构。但是如果这个结构对所有的用户是很重要的,每个用户需要执行同样的检出操作。 很幸运,Subversion提供了外部定义的支持,一个外部定义是一个本地路经到URL的影

  • 我的在中,我的在中 我的测试都运行正确,但是intelliJ拒绝查看步骤defs在哪里,即使我要求它创建一个新的步骤defs。这是在哪里配置的?

  • 在中定义额外的方法(不重写超类方法)时,代码编译良好,没有任何问题,但如果我试图调用额外的方法,它会抛出错误。那么,在使用扩展时,是否只有在子类中的方法才可能?如果是这样,谁能解释一下为什么? 下面是我的代码的样子 这就是我得到的错误

  • 在Spring-Boot应用程序中,可以使用中的属性来选择上下文路径,但是由于我使用的是外部Tomcat8,因此没有使用该属性。 因此,我查看了tomcat-8文档,其中指出: 如果要使用与基文件名无关的上下文路径部署WAR文件或目录,则必须使用以下选项之一来防止双重部署: null null

  • 问题内容: 使用时应该遵循哪种目录结构?例如,如果我正在构建WSGI应用程序并创建了一个称为virtualenv的虚拟环境,那么它将以类似以下的目录结构开始: 创建此环境后,将在哪里放置自己的环境: python文件? 静态文件(图像/等)? “自定义”程序包,例如在线提供的但在奶酪商店中找不到的程序包? 关于目录? (假设我已经知道virtualenv目录本身应该在哪里。) 问题答案: 提供py