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

Quarkus rest 客户端类不设异常: org.apache.commons.logging.impl.LogFactoryImpl 在纯模式下

秦鸿羽
2023-03-14

我有一个有多个模块的Quarkus项目。

└── Parent module
        └── Common module
        └── child module
        └── some module

在公共模块中,我添加了以下依赖项(遵循本指南 https://quarkus.io/guides/rest-client)。

<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-rest-client</artifactId>
</dependency>
<dependency>
    <groupId>io.quarkus</groupId>
    <artifactId>quarkus-rest-client-jackson</artifactId>
</dependency>

子模块将公共模块作为依赖项。

以及我在子模块中使用的代码片段。

@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
@ApplicationScoped
@RegisterRestClient(configKey = "URL")
@RegisterClientHeaders(AuthorizationHeaderFactory.class)
public interface MyRestClient {

    @POST
    @Path("/{id}")
    FooResponse<FooResponseData> makeFooPayout(@PathParam("id") String accountId,
                                            FooRequest<FooData> requestData);
    }
}

并从另一个ApplicationScoped类调用它:

    FooResponse<FooResponseData> fooResponse = myRestClient.makeFooPayout(
            payoutDTO.id(),
            fooRequest
    );

当在纯模式下运行应用程序时,它会抛出类不被发现例外:组织

我偶然发现了这个(https://quarkus.io/guides/logging#logging-adapters),以为它会为我解决这个问题。

我按照指南尝试从父模块中的rest客户端依赖项中排除日志记录。

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client</artifactId>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-rest-client-jackson</artifactId>
        <exclusions>
            <exclusion>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

并按照文档中的建议添加了一个适配器:

<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>commons-logging-jboss-logging</artifactId>
</dependency>

为什么这不能解决问题?我错过了什么吗?我应该排除子级内部的日志记录依赖项pom.xml?

共有1个答案

郗唯
2023-03-14

按照本指南,这一问题现已解决https://quarkus.io/guides/logging#logging-适配器。

在pom内部的公共模块中,我将此添加到所有依赖项中(不确定是否所有依赖项都需要排除< code>commons-logging)。

   <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>

并且还添加了一个JBoss日志适配器,如Quarkus留档中建议的那样。

<dependency>
    <groupId>org.jboss.logging</groupId>
    <artifactId>commons-logging-jboss-logging</artifactId>
</dependency>
 类似资料:
  • 我有一个从服务器端抛出的异常,我希望在客户端捕捉到这个异常。异常应该使用Jersey通过REST发送。这是我目前所掌握的: 定义我的异常:

  • 我有一个使用RESTEasy的简单客户端,如下所示: 服务器配置为在以及一条有用的信息。正在抛出一个。除了包装在中之外,我如何使捕获异常并以字符串形式返回响应的有用消息。我尝试了各种实现,但似乎都是正确的。上述代码从未调用。我错过了什么? 我目前的解决方法是使用,然后执行并将原始状态填充到响应实体中。这样我就避免了异常抛出。

  • 我的项目是客户端/服务器,客户端发送一个对象到服务器,服务器响应,所有这些都是通过RMI 客户项目 //接口 //我需要把它发给的班级 //客户端 //服务器项目 //接口公共接口RMI_接口扩展了远程{ //类,我将发送和接收它公共类Employee实现可序列化的{int ID; //类来保存所有接收到的对象公共类Maneger{ //服务器公共类RMI_server扩展了UnicastRemo

  • 问题内容: 到现在为止,我主要是利用,,用于构建Web应用程序技术堆栈。关键是,提到的堆栈使用服务器端模式。Web浏览器的主要作用仅限于请求/响应周期(+客户端验证)。数据检索,业务逻辑,接线和验证是服务器端的主要职责。 我对 AngularJS 框架有几个疑问,这些疑问是由我阅读过以下引号引起的: 从 AngularJS教程中 : 对于Angular应用,我们鼓励使用Model-View-Con

  • 关于AngularJS框架,我有几个问题是从我读到的以下引用中得到启发的: 从AngularJS教程: 对于有角度的应用程序,我们鼓励使用Model-View-Controller(MVC)设计模式来解耦代码并分离关注点。 我知道我的问题有些奇怪,但我认为原因是,我对传统的服务器端MVC模式有些敏感。我确信有人已经做了同样的转变。