我已经从WSDL定义中生成了具有wsimport
的对象。
在我的主类中,我只是手动声明我需要的端点,并将其传递给PK以进行调用。
我必须与客户端PK建立一个HTTPS连接。对于每个端点,我必须设置authenticateClient
。糟糕的是内容是相等的,只是签名变成了另一个接口。
有没有办法不重复相同的方法代码一次又一次?
private void authenticateClient(AdamConsultationMesuresServiceReadPortType port) {
Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
SpringSoapClientConfig soapClientConfig = new SpringSoapClientConfig();
KeyManagerFactory keyManagerFactory = soapClientConfig.getKeyManagerFactory(company);
TLSClientParameters tslClientParameters = httpConduit.getTlsClientParameters();
if (tslClientParameters == null) {
tslClientParameters = new TLSClientParameters();
}
tslClientParameters.setKeyManagers(keyManagerFactory.getKeyManagers());
tslClientParameters.setDisableCNCheck(true);
httpConduit.setTlsClientParameters(tslClientParameters);
}
private void authenticateClientCommandeCollectePublicationMesures(CommandeCollectePublicationMesuresPortType port) {
Client client = ClientProxy.getClient(port);
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
SpringSoapClientConfig soapClientConfig = new SpringSoapClientConfig();
KeyManagerFactory keyManagerFactory = soapClientConfig.getKeyManagerFactory(company);
TLSClientParameters tslClientParameters = httpConduit.getTlsClientParameters();
if (tslClientParameters == null) {
tslClientParameters = new TLSClientParameters();
}
tslClientParameters.setKeyManagers(keyManagerFactory.getKeyManagers());
tslClientParameters.setDisableCNCheck(true);
httpConduit.setTlsClientParameters(tslClientParameters);
}
我是否应该将输入参数定义为泛型接口类型或类似的东西?
非常基本和简单的方法
private void authenticateClient(AdamConsultationMesuresServiceReadPortType port) {
doYourStuff(ClientProxy.getClient(port));
}
private void authenticateClientCommandeCollectePublicationMesures(CommandeCollectePublicationMesuresPortType port) {
doYourStuff(ClientProxy.getClient(port));
}
private void doYourStuff(Client client){
HTTPConduit httpConduit = (HTTPConduit) client.getConduit();
SpringSoapClientConfig soapClientConfig = new SpringSoapClientConfig();
KeyManagerFactory keyManagerFactory = soapClientConfig.getKeyManagerFactory(company);
TLSClientParameters tslClientParameters = httpConduit.getTlsClientParameters();
if (tslClientParameters == null) {
tslClientParameters = new TLSClientParameters();
}
tslClientParameters.setKeyManagers(keyManagerFactory.getKeyManagers());
tslClientParameters.setDisableCNCheck(true);
httpConduit.setTlsClientParameters(tslClientParameters);
}