cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Yan Min Sheng (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CXF-4836) ServiceImpl getPort does not need to throw Exception if the portName can not be found in portInfos
Date Tue, 19 Feb 2013 12:25:11 GMT

     [ 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 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. 

  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 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. 

--
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

Mime
View raw message