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

如何在 SE 应用中引导焊缝 osgi 版本 2

葛昱
2023-03-14

真的不好笑。互联网上没有关于如何在se应用程序中运行weld-osgi第二版(2.1.2.final)的信息。版本1的说明不起作用。

让开发人员为他们没有提供必要的示例而感到羞愧。我在这里写的。

所以,我有OSGi激活器,我想从中获取bean。在GF4中,我使用了这个:

private BeanManager getBeanManager() throws NamingException
{
  try{
   InitialContext initialContext = new InitialContext();
            return (BeanManager)  initialContext.lookup("java:comp/BeanManager");
   }
  catch (NamingException e) {
            System.out.println("Couldn't get BeanManager through JNDI");
            return null;
   }
}

但是在SE应用程序中,我无法通过JNDI获得它。我也试过了:

Weld weld=new Weld();
BeanManager beanManager=weld.getBeanManager();

但是在第二行,我得到

原因:java.lang.IllegalStateException:未设置单例。您的Thread.currentThread(). getContextClassLoader()设置正确吗?

如何从激活器开始使用CDI?我的错误是什么?

编辑:我所做的-我找到了两个使用它的程序的两个源代码,但在它们的基础上编写真的不那么容易(至少对我来说)。第一个在这里,第二个在这里

共有1个答案

端木元青
2023-03-14

weld 2不再支持weld osgi子项目。相反,使用Pax CDI项目提供了与osgi的集成。

Pax CDI 文档可以在这里找到: https://ops4j1.jira.com/wiki/display/PAXCDI/Pax CDI

更多信息请访问:-http://karaf.apache.org/manual/latest/users-guide/cdi.html-https://github . com/weld/core/blob/master/examples/OSGi/readme . MD

 类似资料:
  • 我的项目有两个OSGi包(A和B),它们需要使用不同版本的-A需要1.1.0版本,而B需要1.1.1版本。 如果我在这个sling.properties文件中给出的javax.activation的版本大于1.1.1,那么a和B都使用系统版本(尽管文件中指定了import-packages的版本);但如果我给出的版本小于1.1.1,那么两个包都使用AEM提供的版本。 如何配置我的Bundle,以便

  • 问题内容: 我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动。只是启动和关闭。 我正在控制台上关注。 有问题的线是。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加了。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢? Weld的官方文档还给出了阅读此答案后得到的相同代码。“ Antonio Goncalves”撰写的“ Beginning Java

  • 我有一个V2.2.2版本的Spring Boot示例应用程序,它提供2个GET请求。我应该使用什么版本的swagger和swagger UI,因为springfox-swagger2和springfox-swagger-ui的最新版本在提到的Spring boot版本中不受支持?

  • 问题内容: 我一直在想,用于Android开发的Java版本与Java SE版本之间的关系。例如,我今天正在阅读有关Java SE 7中添加的功能“类型推断和通用方法”的信息。我不知道自己,“我可以在Android代码中使用它吗?” 当然,我可以将代码输入到Android项目中,看看它是否可以编译,但是我更愿意在自己的脑海里有了某种映射。 我已经尝试使用Google搜索此信息,检查Android文

  • 我正在junit测试中使用Weld SE。它似乎没有注入CDIBean的内部场。我使用的是maven artifcat 没有例外,该字段只是空的。我尝试了构造函数注入,而不是字段注入: 在这种情况下,我会收到一条异常消息:org。jboss。焊接例外。不满意的解决方案例外:WELD-001334:带限定符的Z型服务的不满意依赖项

  • 我正在学习jboss Weld Event教程中的Weld Event,我想写一个观察事件并在事件被激发时打印helloword的示例。 这是我的代码: 它不起作用,给出以下异常信息: 容器中似乎没有可以初始化的bean 那么我该怎么做才能使它运行,我的beans.xml是空的 也许我应该在beans.xml中做些什么? 或者我应该编写一个实现事件接口的Java类? 任何内容都将适用。