社区首页 >问答首页 >如何在Glassfish V4.0中创建ManagedThreadFactory实例

如何在Glassfish V4.0中创建ManagedThreadFactory实例
EN

Stack Overflow用户
提问于 2015-02-04 10:22:32
回答 1查看 2.2K关注 0票数 4

我正在从运行在Glassfish V4.0 (build 89)容器中运行的rabbitMQ代码中调用客户端(而不是服务器),以连接到另一台机器上的rabbitmq服务器。根据rabbitmq客户端文档,我们应该向rabbitmq连接提供一个ManagedThreadFactory实例,用于创建线程。

我试着用DefaultManagedThreadFactory注射

ctx.lookup("java:comp/DefaultManagedThreadFactory")

失败了

查找SerialContext.中的'java:comp/DefaultManagedThreadFactory‘失败

尝试@Resource(lookup="concurrent/__DefaultManagedThreadFactory")会导致NPE的发生。

我不太喜欢java,我正在使用这个容器作为我的运动衫web服务的前端。显然,我需要做一些更多/不同的事情。然而,除了

contextservice

http://javahowto.blogspot.in/2011/02/how-to-create-and-look-up-thread-pool.html

任何Java专家能告诉我正确的巫毒咒语来做这件事吗?

更新-1

代码语言:javascript
代码运行次数:0
复制
@Resource(name = "concurrent/__defaultManagedThreadFactory")
ManagedThreadFactory threadFactory;

// set on rabbitmq connection Factory
factory.setThreadFactory(threadFactory);


java.lang.NullPointerException
at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1312)
at java.util.concurrent.ThreadPoolExecutor.<init>(ThreadPoolExecutor.java:1233)
at java.util.concurrent.Executors.newFixedThreadPool(Executors.java:114)
at com.rabbitmq.client.impl.ConsumerWorkService.<init>(ConsumerWorkService.java:36)

更新-2

阿克塞尔-我的案子没什么特别的。在GFV4中尝试一个rabbitmq客户机就是我想要看到的。所以要重现这些问题

  • 您需要运行rabbitmq服务器。
  • 使用部署在GF上的war的一部分客户端代码连接到rabbitmq服务器。
  • 按照rabbitmq指南(https://www.rabbitmq.com/api-guide.html) @,请参阅自定义线程工厂部分。它们将线程实例化委托给容器。
  • rabbitmq java客户端代码在Github上。

我可以从GF中看到ManagedThreadFactory名称,所以它应该在那里。

更新-3

托管线程工厂和托管执行器服务可以使用JNDI定位。但是,不能将相同的资源注入使用泽西岛web服务的代码中。资源注入与一个简单的servlet示例一起工作(例如,Github上的java EE7示例)。

这是由于泽西/Hk2 2/CDI/焊缝等相互作用造成的吗?我正在寻找一个权威的答案,为什么我不能使资源注入工作?

EN

回答 1

Stack Overflow用户

发布于 2015-02-04 23:22:04

我在运行Glassfish 4的Java项目中注入这样的默认托管线程工厂:

代码语言:javascript
代码运行次数:0
复制
@Singleton
@Startup
public class Messenger {
    @EJB
    MyMessenger me;

    @Resource(name = "concurrent/__defaultManagedThreadFactory")
    ManagedThreadFactory threadFactory;

    @Resource
    ManagedExecutorService executorService;

    @PostConstruct
    public void postConstruct() {
        me.waitAndInitialize();
    }

    @Asynchronous
    public Future<?> waitAndInitialize() {
        try {
            final AtomicInteger done = new AtomicInteger(0);
            int i = 0;

            while (done.intValue() == 0 && i < 20) {
                i++;
                getExecutorService().submit(
                        new Runnable() {

                            @Override
                            public void run() {
                                int incrementAndGet = done.incrementAndGet();
                            }
                        });

                Thread.sleep(500);
            }

            if (done.intValue() == 0) {
                Logger.getAnonymousLogger().severe("Waited a long time for the ExecutorService do become ready, but it never did. Will not initialize!");
            } else {
                init();
            }
        } catch (Exception e) {
            Logger.getLogger(this.getClass().getName()).log(Level.SEVERE, "Exception in waitAndInitialize: " + e.getMessage(), e);
        }

        return new AsyncResult<>(null);
    }

    protected void init() {
        connectionFactory.setExecutorService(executorService);
        connectionFactory.setThreadFactory(threadFactory);

        // connect to rabbit and listen to queues
    }
}

asadmin list-containers输出

代码语言:javascript
代码运行次数:0
复制
List all known application containers
resources_ear
resources
ejb
weld
weld
grizzly
web
connector
webservices
appclient
jpa
jpa
ear
osgi
security
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28328594

复制
相关文章
如何在js中创建对象
七夕临近了,没有对象的来创建一个吧 使用对象字面量: const o = { name: "zehan", greeting() { return `Hi, 我是${this.name}`; } }; o.greeting(); // "Hi, zehan" 使用构造函数: function Person(name) { this.name = name; } Person.prototype.greeting = function () { return `Hi, 我是
ZEHAN
2020/09/23
7.6K0
如何在Dynamo中创建UI
本文介绍了如何在Dynamo中创建UI,通过使用WPF技术实现了窗口的创建和交互。首先介绍了IronPython和Dynamo的基础知识,然后讲解了实现原理和准备工作。最后通过具体的操作步骤和代码示例讲解了如何在Dynamo中创建UI。
企鹅号小编
2018/01/05
2.1K0
如何在Dynamo中创建UI
如何在Mac中创建MiniKube
Minikube是一个工具,可以在本地轻松运行Kubernetes。 Minikube在笔记本电脑的VM中运行单节点Kubernetes集群,供希望尝试Kubernetes或日常开发的用户使用。
方志朋
2022/05/08
2.4K0
如何在Mac中创建MiniKube
Python中动态创建类实例
简介 在Java中我们可以通过反射来根据类名创建类实例,那么在Python我们怎么实现类似功能呢? 其实在Python有一个builtin函数import,我们可以使用这个函数来在运行时动态加载一些模块。如下: def createInstance(module_name, class_name, *args, **kwargs): module_meta = __import__(module_name, globals(), locals(), [class_name]) class_m
kongxx
2018/05/14
2.4K0
GlassFish 总结
Glassfish是一款Web应用服务器,和Tomcat一样,也是一款优秀的Servlet容器。
全栈程序员站长
2022/09/06
6490
如何在 WordPress 中创建联系表格?
假设我们有一个 WordPress 网站,并且我们想要添加一个功能,让他们可以联系他们所拥有的查询。我们可以通过使用网站上的 WordPress 插件添加联系表格来做到这一点。因此,这将为你的访问者提供一种与你联系的方式,当他们需要帮助或有什么要分享的时候。
海拥
2022/12/19
2.9K0
如何在 WordPress 中创建联系表格?
如何在 WordPress 中创建登录页面
登陆页面: 登陆页面是为特定受众制定的具有特定目标的目标页面,可以描述为“一页一目的”。登陆页面必须有一个“号召性用语”,并牢记特定目标。成功的着陆页是具有更高转化率、更高参与度和更高质量潜在客户的页面。
海拥
2022/10/04
2.9K0
如何在 WordPress 中创建登录页面
如何在git中创建新分支
介绍 Git 是一个开源版本控制系统,用于在软件开发过程中跟踪更改。它的相互独立的分支模型使其脱颖而出。分支可以基于以前版本的软件来保持当前进度的完整性,同时处理错误修复或新功能。 在本地创建 Git 存储库 要创建新的 Git 存储库,请在终端中输入以下命令: mkdir rumenz cd rumenz git init 这将在 rumenz 目录中创建并初始化一个新的 Git 存储库。创建一个新的降价文件并添加一行文本: echo This is a line of text > rumenz.md
入门笔记
2022/06/02
2.9K0
如何在CVM实例中访问对象存储
对象存储服务与客户的VPC打通,需要客户先确认在哪个子网中使用。由腾讯云工程师进行网络配置,会在客户指定的子网中配置一个vip并与对象存储打通并映射。
本地专用集群CDC
2023/04/21
3.4K0
如何在 SwiftUI 中创建条形图
条形图以矩形条的形式呈现数据的类别,其宽度和高度与它们表示的值成比例。本文将展示如何创建一个垂直条形图,其中矩形的高度将代表每个类别的值。
Swift社区
2022/12/12
5.2K0
如何在 SwiftUI 中创建条形图
如何在R中创建日历热图
首先,我们运行Paul Bleicher创建的calendarHeat函数以显示日历热图。 其次,我们创建一些随机的时间序列数据。 最后,我们在两个调色板中绘制时间序列。
用户1359560
2020/04/01
4.5K0
如何在R中创建日历热图
如何在 Django 中创建抽象模型类?
Django 中的抽象模型类是一个模型,它用作其他模型继承的模板,而不是一个旨在创建或保存到数据库的模型。在应用程序中,可以使用抽象模型定义多个模型共享的相似字段和行为。使用 Django,您可以定义一个派生自 Django.db.models 的模型类,以建立一个抽象模型类。
很酷的站长
2023/08/11
2350
如何在 Django 中创建抽象模型类?
如何在VMware中创建虚拟机
今天给大家分享如何在VMware中创建虚拟机,具体的教程如下。在这里小编提前下载了Ubuntu14.04桌面系统,为后面在虚拟机中安装Ubuntu14.04桌面系统做准备。
Python进阶者
2018/08/03
1.4K0
如何在VMware中创建虚拟机
如何在java中创建不可变类?
今天我们将学习如何在java中创建不变的类。不可变对象是在初始化之后状态不变的实例。例如,String是一个不可变类,一旦实例化,它的值不会改变。
三产
2021/01/12
1.9K0
如何在linux中创建虚拟环境
安装虚拟环境的命令 : sudo pip install virtualenv sudo pip install virtualenvwrapper 安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量: # 1、创建目录用来存放虚拟环境 mkdir $HOME/.virtualenvs # 2、打开~/.bashrc文件,并添加如下: export WORKON_HOME=$HOME/.virtualenvs source /usr/local/bin/virtualenvwr
汪凡
2019/03/01
4.4K0
如何在linux中创建虚拟环境
如何在 Python 中创建元组字典
本演练是关于在 Python 中创建元组字典的全部内容。此数据结构存储键值对。通过组合字典和元组,可以创建元组字典。好处是以结构化格式组织且可访问的数据。可以轻松表示每个键的多个值,例如学生成绩或联系信息。让我们看看它如何有效地存储和检索复杂数据。
很酷的站长
2023/08/11
2420
如何在 Python 中创建元组字典
vue中的ajax_创建vue实例
vue本身不支持发送AJAX请求,需要使用vue-resource、axios等插件实现 axios是一个基于Promise的HTTP请求客户端,用来发送请求,也是vue2.0官方推荐的,同时不再对vue-resource进行更新和维护
全栈程序员站长
2022/11/11
9210
点击加载更多

相似问题

创建多个实例,如scala

10

Catel v4.0中的单实例窗口

10

Glassfish无法启动,如何重置glassfish实例?

12

如何在GlassFish集群(Glassfish 4)中为每个实例添加单独的Java选项?

118

ManagedThreadFactory不会立即启动线程

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文