我有一个部署到 WildFly 8.1.0-Final 的 Java EE 7 项目。我使用由 Maven 管理的独立 Wildfly 服务器(即每个 上的干净配置mvn clean)进行测试,并远程使用“普通”服务器。
为了使用 maven-wildfly-plugin (1.0.2.Final) 部署到两台服务器,我配置了两个 Maven 配置文件:wildfly-local,它定义了本地用户名、密码和端口号;和wildfly-remote,它定义了远程用户名、密码和端口号。
但是,远程服务器以域模式运行,而本地服务器则不然。因此,我需要为远程服务器定义一个带有服务器组的域配置,如下所示:
...
<plugin>
<artifactId>wildfly-maven-plugin</artifactId>
<configuration>
<hostname>${wildfly-hostname}</hostname>
<username>${wildfly-username}</username>
<password>${wildfly-password}</password>
<domain>
<server-groups>
<server-group>${wildfly-server-group}</server-group>
</server-groups>
</domain>
</configuration>
...
</plugin>
...
Run Code Online (Sandbox Code Playgroud)
${wildfly-hostname}并且在配置文件中定义了其他三个属性,并且此配置有效。但是,独立的非“域模式”本地测试服务器根本不允许部署定义了服务器组的应用程序。
我的第一个想法是在远程配置文件中定义一个嵌套属性,如下所示:
<profile>
<id>wildfly-remote</id>
<properties>
...
<wildfly-domain>
<server-groups>
<server-group>*my server group name*</server-group>
</server-groups>
</wildfly-domain>
...
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
...以及本地配置文件中的一个简单属性,如下所示:
<profile>
<id>wildfly-local</id>
<properties>
<wildfly-domain/>
</properties>
</profile>
Run Code Online (Sandbox Code Playgroud)
Maven 不喜欢这样,因为它无法解析需要文本的标签。
有什么方法可以定义嵌套在一个 Maven 配置文件中但平放在另一个配置文件中的“资源”?
我正在尝试配置一个反应式 WebClient 以使用 2 路 TLS。我用这个答案作为参考。(使用 WebClientCustomizer 的那个,而不是使用 InsecureTrustManager 的那个)。
我仔细检查了客户端和服务器端的密钥库和信任库,但服务器发回一个错误,指出客户端没有提供任何证书:
@Bean
WebClientCustomizer configureWebclient(@Value("${server.ssl.trust-store}") String trustStorePath, @Value("${server.ssl.trust-store-password}") String trustStorePass,
@Value("${server.ssl.key-store}") String keyStorePath, @Value("${server.ssl.key-store-password}") String keyStorePass, @Value("${server.ssl.key-alias}") String keyAlias) {
return new WebClientCustomizer() {
@Override
public void customize(Builder webClientBuilder) {
SslContext sslContext;
try {
KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType());
trustStore.load(new FileInputStream(ResourceUtils.getFile(trustStorePath)), trustStorePass.toCharArray());
List<Certificate> certificateCollcetion = Collections.list(trustStore.aliases()).stream().filter(t -> {
try {
return trustStore.isCertificateEntry(t);
} catch (KeyStoreException e1) {
throw new RuntimeException("Error reading truststore", e1);
}
}).map(t -> {
try {
return …Run Code Online (Sandbox Code Playgroud)