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

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

What I removed is :
    public <T> T getPort(QName portName, Class<T> serviceEndpointInterface, 
WebServiceFeature... features) {
        if (portName == null) {
            throw new 
WebServiceException(BUNDLE.getString("PORT_NAME_NULL_EXC"));
        }

      //Here the check should not be needed
//        if (!portInfos.containsKey(portName)) {
//            throw new WebServiceException(new Message("INVALID_PORT", BUNDLE, 
portName).toString());
//        }

        try {
            return createPort(portName, null, serviceEndpointInterface, 
features);
        } catch (ServiceConstructionException e) {
            throw new WebServiceException(e);
        }
    }

Can anybody take a look at it? Thanks.
                
> 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