[ 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