[ 
https://issues.apache.org/jira/browse/CXF-4836?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13599753#comment-13599753
 ] 

Yan Min Sheng commented on CXF-4836:
------------------------------------

The JSR 224 spec has the following statement:

4.1 javax.xml.Service
Create a new port via the addPortmethod. Such ports only include binding and 
endpoint information
and are thus only suitable for creating Dispatch instances since these do not 
requireWSDL port type
information.

So I do not think the exception should be thrown here as proxy is used in this 
case not dispatch.
                
> 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

Reply via email to