I need to call some SOAP web services from my app deployed on Open Liberty 24.0.0.4.
Unfortunately I observe a high memory consumption by classes inside the com.ibm.ws.jaxws package, specifically the ConduitConfigurer class.
It seems like a ConduitConfigurer is instanciated and ConduitConfigurer.configure is called each time a call is made to an endpoint.
Is it a normal behaviour or a problem with my implementation ?
Here is some profiling details :
- Classes in memory
- ConduitConfigurer$Info details
- Hashtable$Entry details
And from another test, I’ve bee able to observed those stacks :
Here is the implementation of my jaxws client and the way I use it :
@WebServiceClient(name = "MyService", targetNamespace = "http://com.mycompany/api/service/ws")
class MyServiceClient extends Service {
private final MyService port = super.getPort(
new QName("http://com.mycompany/api/service/ws", "MyServicePort"), MyService.class);
protected MyServiceClient(URL wsdlLocation, QName serviceName) {
super(wsdlLocation, serviceName);
}
@WebEndpoint(name = "MyServicePort")
public MyService getPort() {
return port;
}
}
@ApplicationScoped
public class TestJaxWsClient {
@WebServiceRef(name = "service/MyService")
private MyServiceClient myServiceClient;
public void callMyService() {
myServiceClient.getPort().myService();
}
}
I know that the port is not thread safe but I did it this way to exclude that the cause is the instantiation of a new port.