当前位置: 首页 > 面试题库 >

焊缝未正确初始化

江宏深
2023-03-14
问题内容

我正在设置用于学习JavaEE7中CDI的基本环境。我有以下代码可以启动Weld。只是启动和关闭。

package com.anshbansal;

import org.jboss.weld.environment.se.Weld;
import org.jboss.weld.environment.se.WeldContainer;

public class Main {
    public static void main(String[] args) {
        Weld weld = new Weld();
        WeldContainer container = weld.initialize();
        weld.shutdown();
    }
}

我正在控制台上关注。

SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/D:/Softs/Programming/Java/Java%20JARs/JBoss%20Weld-2.0.3/jar/weld-se.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/D:/Softs/Programming/Java/Java%20JARs/JBoss%20Weld-2.0.3/jar/weld-servlet.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.slf4j.impl.SimpleLoggerFactory]
[main] INFO org.jboss.weld.Version - WELD-000900 2.0.3 (Final)
[main] INFO org.jboss.weld.Bootstrap - WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.
log4j:WARN No appenders could be found for logger (org.jboss.logging).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.

有问题的线是WELD-000101 Transactional services not available. Injection of @Inject UserTransaction not available. Transactional observers will be invoked synchronously.。这仅表示依赖注入将不起作用。但是我不确定是什么问题。我已经添加weld- se.jarCLASSPATH。我什至没有达到初始化对象的目的,那为什么会出现这个问题呢?

Weld的官方文档还给出了阅读此答案后得到的相同代码。“
Antonio Goncalves”撰写的“ Beginning Java EE
7”一书中使用了相同的代码。我已经从github位置验证了导入。因此,如果我使用了正确的类路径并且没有创建任何对象,那么为什么会发生此问题?


问题答案:

运行Java EE应用程序需要一个应用程序服务器(或容器)。该容器使您运行企业应用程序所需的不同服务(安全性,消息传递,事务等)的集成变得非常简单。

如果不使用应用程序服务器(如您在示例中所做的那样),则必须自己进行此集成(即,构建自己的服务器)。由于存在服务器,因此这是一项非常艰巨且无用的任务。

您在问题中显示的代码是您在不需要或可以使用容器时如何使用Weld的专有部分手动启动CDI容器。

如果您仔细阅读了Antonio的书,您将在 第xxxiv页的 “下载和运行代码” 部分中看到,声明您需要在Glassfish
4(一台开源Java EE 7服务器(另一台开源服务器)上)上部署代码。成为JBoss Wildfly)

*本书的 *附录A第539页 )以非常精确的方式描述了如何设置环境以运行本书示例和简单的Java
EE应用程序。请按照本部分中的说明进行操作,您会发现开发和部署Java EE 7应用程序非常简单。



 类似资料:
  • 我们的项目中有一个不可替代代币状态和不可替代代币合约的自定义实现。我们正在使用下面的代码来发行我们的自定义不可替代代币。 当试图将上面获得的事务构建器转换为有线事务时(< code > builder . towiretransaction(service hub);)我们在下面的堆栈跟踪中得到一个错误。

  • 问题内容: 将log4j添加到我的应用程序后,每次执行我的应用程序时,都会得到以下输出: 看来这意味着缺少配置文件。此配置文件应位于何处,什么是良好的入门内容? 我使用纯Java开发桌面应用程序。因此没有网络服务器等… 问题答案: 默认情况下,在上查找名为或的文件。 您可以按照此处所述通过设置系统属性来控制它用来初始化自身的文件(查找“默认初始化过程”部分)。 例如: 将导致在类路径上查找名为的文

  • 问题内容: 用RefluxJS异步初始化数据的正确方法是什么?是否有类似于AngularJS的解决方案,或者Flux的实现与此无关(路由器应该处理此职责)? 问题答案: 在应用程序的顶级组件中,使用方法(docs)触发获取数据的操作。最初渲染组件时将调用此方法。 例如:

  • 我正在使用spring Boot1.5.9编写一个小型rest服务器。我刚开始使用初始化代码,就被这种奇怪的行为卡住了。 我有个小测试- 最初,Application.Properties被忽略。在我添加了@SpringBootTest注释之后,application.properties被读取,但开始出现以下错误。 配置bean如下所示- 而且 我确实使用@EnableAutoConfigura

  • 问题内容: 这是错误消息- 这是该类中的调用- 这是我的log4j.properties文件的内容- 属性文件在类路径上。 一切对我来说都很好,这是怎么回事?如果不是门槛也可拍摄记录? 问题答案: 好了,所以我通过更改 对此 显然,您必须将日志记录级别指定为第一个?如果我浪费任何人的时间,我深表歉意。 另外,我决定回答我自己的问题,因为这不是类路径问题。