aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java')
-rw-r--r--src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java35
1 files changed, 28 insertions, 7 deletions
diff --git a/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java b/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java
index 071a243..c40aec1 100644
--- a/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java
+++ b/src/main/java/at/gv/egiz/moazs/msg/MsgClientFactory.java
@@ -4,7 +4,15 @@ import at.gv.egiz.moazs.util.FileUtils;
import at.gv.egiz.moazs.util.SSLContextCreator;
import at.gv.zustellung.app2mzs.xsd.ClientType;
import at.gv.zustellung.app2mzs.xsd.KeyStoreType;
+import at.gv.zustellung.msg.xsd.App2ZusePort;
import com.sun.istack.Nullable;
+import org.apache.cxf.configuration.jsse.TLSClientParameters;
+import org.apache.cxf.endpoint.Client;
+import org.apache.cxf.frontend.ClientProxy;
+import org.apache.cxf.jaxws.JaxWsClientFactoryBean;
+import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
+import org.apache.cxf.transport.http.HTTPConduit;
+import org.apache.cxf.transports.http.configuration.HTTPClientPolicy;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@@ -23,7 +31,6 @@ public class MsgClientFactory {
private final SSLContextCreator sslContextCreator;
private final FileUtils fileUtils;
-
@Autowired
public MsgClientFactory(StoreSOAPBodyBinaryInRepositoryInterceptor storeResponseInterceptor, SSLContextCreator creator, FileUtils fileUtils) {
this.storeResponseInterceptor = storeResponseInterceptor;
@@ -31,7 +38,6 @@ public class MsgClientFactory {
this.fileUtils = fileUtils;
}
-
/**
* Creates a client that communicates with a msg service.
*
@@ -39,17 +45,33 @@ public class MsgClientFactory {
* @return the msg client
*/
//TODO evaluate and honor laxhostnameverification and trustall parameter!
- public MsgClient create(ClientType params) {
+ public App2ZusePort create(ClientType params) {
+
+ var factory = new JaxWsClientFactoryBean();
+ factory.setServiceClass(App2ZusePort.class);
+ factory.setAddress(params.getURL());
+ factory.getInInterceptors().add(storeResponseInterceptor);
- SSLContext sslContext = null;
+ var proxy = new JaxWsProxyFactoryBean(factory).create();
+ Client client = ClientProxy.getClient(proxy);
+ HTTPConduit http = (HTTPConduit) client.getConduit();
+
+ var httpClientPolicy = new HTTPClientPolicy();
+ httpClientPolicy.setConnectionTimeout(params.getConnectionTimeout().longValueExact());
+ httpClientPolicy.setReceiveTimeout(params.getReceiveTimeout().longValueExact());
+ http.setClient(httpClientPolicy);
if (params.getURL().startsWith("https")) {
var keystore = resolveKeyStorePath(params.getSSL().getKeyStore());
var truststore = resolveKeyStorePath(params.getSSL().getTrustStore());
- sslContext = sslContextCreator.createSSLContext(keystore, truststore);
+ SSLContext sslContext = sslContextCreator.createSSLContext(keystore, truststore);
+ var tlsParams = new TLSClientParameters();
+ tlsParams.setSSLSocketFactory(sslContext.getSocketFactory());
+ http.setTlsClientParameters(tlsParams);
+ log.info("SSLContext initialized. ");
}
- return new MsgClient(storeResponseInterceptor, params.getURL(), sslContext);
+ return ((App2ZusePort)proxy);
}
private KeyStoreType resolveKeyStorePath(@Nullable KeyStoreType store) {
@@ -57,7 +79,6 @@ public class MsgClientFactory {
if (store == null) return null;
var resolvedURI = "file:" + fileUtils.determinePath(store.getFileName());
-
log.trace("Resolved key store path from {} to {}.", store.getFileName(), resolvedURI);
return keyStoreTypeBuilder(store)