jochenr commented on issue #5218:
URL: https://github.com/apache/camel-quarkus/issues/5218#issuecomment-1730918810
Hi @ppalaga ,
now I know what is happening and what's causing the issue.
I initialize my service with that code
```
final URL serviceUrl =
Thread.currentThread().getContextClassLoader().getResource("wsdl/ContactService.wsdl");
final Service service = Service.create(serviceUrl,
ContactService.SERVICE, new AddressingFeature(true, true), new
WSRMConfigRMFeature());
ContactWS port = service.getPort(ContactWS.class);
BindingProvider bp = (BindingProvider) port;
Map<String, Object> requestContext = bp.getRequestContext();
// set target address
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
getServerHttpUrl() + WS_BASE_PATH);
```
So, I'm not using the onlilne WSDL, but one that is packaged inside my
application.
The WSDL has a default address location inside the port definition of the
service definition like that:
```
<wsdl:service name="ContactService">
<wsdl:port binding="tns:ContactServiceSoapBinding"
name="ContactServicePort">
<!-- working -->
<!--
<soap:address
location="http://localhost:8180/cxfservices/contact" />
-->
<!-- also working -->
<!--
<soap:address
location="https://localhost:8543/cxfservices/contact" />
-->
<!-- NOT Working, because override from code does not
work any more! -->
<soap:address
location="https://nowhere.com:8080/mustgetoverridden" />
</wsdl:port>
</wsdl:service>
```
For that default address I always set an URL that is not existing, so thet
the application is forced to override it.
I want to prevent that someone is calling the service for a wrong
staging-level or a wrong tenant.
Meanwhilem I noticed that CXF is trying to use the address from the WSDL
instead of the one I set in the code with:
```
requestContext.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,
getServerHttpUrl() + WS_BASE_PATH);
```
I built two additional reproducers:
https://github.com/jochenr/my-camel-quarkus-projects/tree/main/camel-quarkus-cxf-soap-wssecurity-wsrm
and
https://github.com/jochenr/my-camel-quarkus-projects/tree/main/camel-quarkus-cxf-soap-wsrm
You can make them both work by just changing the
```
<wsdl:service name="ContactService">
<wsdl:port binding="tns:ContactServiceSoapBinding"
name="ContactServicePort">
<soap:address location="...." />
</wsdl:port>
</wsdl:service>
```
mentionad above.
The
https://github.com/jochenr/my-camel-quarkus-projects/tree/main/camel-quarkus-cxf-soap-wssecurity-wsrm
example shows also the problem that the test just hangs.
The
https://github.com/jochenr/my-camel-quarkus-projects/tree/main/camel-quarkus-cxf-soap-wsrm
example at least shows the issue and fals.
Another thing I noticed:
If you look at the test class(es) I print out the line
```
logger.info("SOAP Call from ContactTest will call:\t" + getServerHttpUrl() +
WS_BASE_PATH);
```
in the constructor.
If you look at the console you see that this line is printed out 6 times.
Why??
Hope you now have a better starting point to fix the bug.
It should be in CXF, not in Camel nor in Quarkus, isn't it?
Thank you & best regards,
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]