描述我正在使用MP Rest Client从我的服务实现中调用另一个Rest服务的错误,并希望通过使用@ClientsHeadersFactory
覆盖一些头属性,但当我使用@Inject
使用另一个CDI bean时,会引发NullpointerException
。使用Micro Profile Rest Client 1.4,如果您的实现由CDI管理,则可以使用“@Inject”。这允许您注入机密,例如,或任何其他CDIBean来计算头值。
预期行为注入的ConfigProperty可用且不为空
实际行为NullpointerException发生在ClientHeadersFactory实现的更新方法中。
要复制行为,请执行以下步骤:
@ApplicationScoped
public class MyClientHeadersFactory implements ClientHeadersFactory {
@Inject
@ConfigProperty(name = "secrets.value")
private String secretValue;
@Override
public MultivaluedMap<String, String> update(MultivaluedMap<String, String> incomingHeaders, MultivaluedMap<String, String> clientOutgoingHeaders) {
System.out.println("--- Incoming headers of the JAX-RS environment");
incomingHeaders.forEach((k, v) -> System.out.println(k + ":" + v));
System.out.println("--- Specified outgoing headers of the Rest Client");
clientOutgoingHeaders.forEach((k, v) -> System.out.println(k + ":" + v));
MultivaluedMap<String, String> resultHeader = new MultivaluedHashMap();
resultHeader.putAll(incomingHeaders);
resultHeader.putAll(clientOutgoingHeaders);
//here is the NullpointerException raised
resultHeader.add("X-Secret-Header", secretValue);
System.out.println("--- Header of the Rest Client after merging");
resultHeader.forEach((k, v) -> System.out.println(k + ":" + v));
return resultHeader;
}
}
@RegisterRestClient(configKey = "remote-restservice")
@RegisterClientHeaders(MyClientHeadersFactory.class)
public interface RemoteRestService
{
@POST
@Path("/doSomeStuff")
@Consumes({ "application/json" })
@Produces({ "application/json" })
Response createStuff( @Valid Stuff stuff);
}
配置
# Add your application.properties here, if applicable.
remote-restservice/mp-rest/url=http://localhost:9090/service
secrets.value=test
屏幕截图(如果适用,请添加屏幕截图来帮助解释您的问题。)
环境(请填写以下资料):
uname-a的输出
或ver
:mvnw--version
或gradlew--version
)的输出:附加上下文(在此处添加有关问题的任何其他上下文。)
我也有同样的问题,它已在Quarkus 1.8中修复。
本规范不排除使用未注册的客户端。然而,使用这样的客户端超出了本规范的范围,并需要额外的安全性分析并审查其互操作性影响。
有没有我可以参考的示例应用程序用于Android上的SAML交互?有人在Android上成功移植/使用了OpenSAML吗? 我正在尝试编写一个简单的应用程序,它将(而不是浏览器重定向)使用本机API来执行SAML身份验证。 还有一些指向测试环境的指针,我可以在其中测试SAML客户机,这会有所帮助。
利用 select 实现的 tcp 客户端 利用 select 实现的 tcp 客户端 源码/* * Copyright (c) 2006-2018, RT-Thread Development Team * * SPDX-License-Identifier: Apache-2.0 * * Change Logs: * Date Author Notes * *//* 程序清单:利用 selec
我正在构建一个Quarkus应用程序,它使用resteasy处理http请求,并使用restclient调用另一个api,我需要传播一个头并动态添加另一个头,所以我添加了一个实现ClientHeadersFactory的类。 代码如下: 我的问题是配置的注入不起作用。我使用和两种方法都进行了尝试,如的javadoc所述。我也试图使类不抽象,但它没有改变任何东西。 MicroServicesConf
我一直在使用FTP客户端java实现。我所要做的就是连接到FTP服务器并将一个文件传输到服务器。 我设法与ftp服务器建立了连接(见下面的代码),之后我使用PASV命令进入了被动模式。现在我不知道下一步该做什么。我尝试在PASV命令之后制作一个新套接字并将其连接到FTP服务器端口20,但没有成功。 我的问题是建立连接时如何启动文件传输?(我的想法是与端口20建立连接并执行STOR命令,但我不知道如
我有一个Spring启动1.5.1服务和一个Spring启动管理2.0.1。 考虑到这个留档(http://codecentric.github.io/spring-boot-admin/2.0.0/#monitoring-spring-boot-1.5.x),它们是兼容的。 这是我的客户端设置 我的入口 build.gradle 应用yml 对于服务器设置,我遵循了这里的入门指南http://c