[
https://issues.apache.org/jira/browse/CXF-4836?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yan Min Sheng updated CXF-4836:
-------------------------------
Description:
We create such client which will set target address info and binding info in
RequestContext of BindingProvider.
String mtom11URL =
"http://localhost:9080//MyBusiness/MTOM11Service";
MTOMInterface port = null;
BindingProvider bp = null;
System.out.println("Looking up SOAP 1.1 MTOM service");
QName serviceName = new
QName("http://shengym.com/MyBusiness/","MTOM11Service");
QName portName = new QName("http://shengym.com/MyBusiness",
"MTOM11Port");
// Setup the necessary JAX-WS artifacts
Service svc = Service.create(serviceName);
port = svc.getPort(portName, MTOMInterface.class);
// Set the target URL
bp = (BindingProvider) port;
Map<String, Object> requestCtx = bp.getRequestContext();
requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,mtom11URL);
// Enable MTOM
SOAPBinding binding = (SOAPBinding) bp.getBinding();
binding.setMTOMEnabled(true);
However, it reports such error:
javax.xml.ws.WebServiceException:Port{http://shengym.com/MyBusiness/}MTOM11Port
not found.
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:332)
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:323)
javax.xml.ws.Service.getPort(Service.java:134)
I know that the added following code can fix this error:
svc.addPort(portName, SOAPBinding.SOAP11HTTP_MTOM_BINDING, mtom11URL);
Well, this error should not report even the addPort method is not called.
I know the added check in ServiceImpl is to avoid run time error and report it
as early as possible. But I think it is not needed. The reasons are:
1. User can get run time error later;
2. User can set target addess info and bind info in other ways (as my example
shows)
I remove the check from the ServiceImpl then my client code works well.
was:
We create such client which will set target address info and binding info in
RequestContext of BindingProvider.
String mtom11URL =
"http://localhost:9080//MyBusiness/MTOM11Service";
MTOMInterface port = null;
BindingProvider bp = null;
System.out.println("Looking up SOAP 1.1 MTOM service");
QName serviceName = new
QName("http://shengym.com/MyBusiness/","MTOM11Service");
QName portName = new QName("http://shengym.com/MyBusiness",
"MTOM11Port");
// Setup the necessary JAX-WS artifacts
Service svc = Service.create(serviceName);
port = svc.getPort(portName, MTOMInterface.class);
// Set the target URL
bp = (BindingProvider) port;
Map<String, Object> requestCtx = bp.getRequestContext();
requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,mtom11URL);
// Enable MTOM
SOAPBinding binding = (SOAPBinding) bp.getBinding();
binding.setMTOMEnabled(true);
However, it reports such error:
javax.xml.ws.WebServiceException:Port{http://shengym.com/MyBusiness/}MTOM11Port
not found.
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:332)
org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:323)
javax.xml.ws.Service.getPort(Service.java:134)
I know that the added following code can fix this error:
svc.addPort(portName, SOAPBinding.SOAP11HTTP_MTOM_BINDING, mtom11URL);
Well, this error should not report even the addPort method is not called
because we use bind and set transport info in RequestContext and SoapBinding of
BindingProvider.
I know the added check in ServiceImpl is to avoid run time error and report it
as early as possible. But I think it is not needed. The reasons are:
1. User can get run time error later;
2. User can set target addess info and bind info in other ways (as my example
shows)
I remove the check from the ServiceImpl then my client code works well.
> ServiceImpl getPort does not need to throw Exception if the portName can not
> be found in portInfos
> --------------------------------------------------------------------------------------------------
>
> Key: CXF-4836
> URL: https://issues.apache.org/jira/browse/CXF-4836
> Project: CXF
> Issue Type: Bug
> Components: JAX-WS Runtime
> Affects Versions: 2.6.2
> Reporter: Yan Min Sheng
>
> We create such client which will set target address info and binding info in
> RequestContext of BindingProvider.
> String mtom11URL =
> "http://localhost:9080//MyBusiness/MTOM11Service";
>
> MTOMInterface port = null;
> BindingProvider bp = null;
>
> System.out.println("Looking up SOAP 1.1 MTOM service");
> QName serviceName = new
> QName("http://shengym.com/MyBusiness/","MTOM11Service");
> QName portName = new QName("http://shengym.com/MyBusiness",
> "MTOM11Port");
> // Setup the necessary JAX-WS artifacts
> Service svc = Service.create(serviceName);
> port = svc.getPort(portName, MTOMInterface.class);
> // Set the target URL
> bp = (BindingProvider) port;
> Map<String, Object> requestCtx = bp.getRequestContext();
>
> requestCtx.put(BindingProvider.ENDPOINT_ADDRESS_PROPERTY,mtom11URL);
>
> // Enable MTOM
> SOAPBinding binding = (SOAPBinding) bp.getBinding();
> binding.setMTOMEnabled(true);
> However, it reports such error:
> javax.xml.ws.WebServiceException:Port{http://shengym.com/MyBusiness/}MTOM11Port
> not found.
> org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:332)
> org.apache.cxf.jaxws.ServiceImpl.getPort(ServiceImpl.java:323)
> javax.xml.ws.Service.getPort(Service.java:134)
> I know that the added following code can fix this error:
> svc.addPort(portName, SOAPBinding.SOAP11HTTP_MTOM_BINDING, mtom11URL);
> Well, this error should not report even the addPort method is not called.
> I know the added check in ServiceImpl is to avoid run time error and report
> it as early as possible. But I think it is not needed. The reasons are:
> 1. User can get run time error later;
> 2. User can set target addess info and bind info in other ways (as my example
> shows)
> I remove the check from the ServiceImpl then my client code works well.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira