You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cxf.apache.org by "Daniel Kulp (JIRA)" <ji...@apache.org> on 2008/05/19 21:45:55 UTC
[jira] Assigned: (CXF-1589) Exception is thrown only the first time
an error occur while trying to publish a webservice with HTTP transport
[ https://issues.apache.org/jira/browse/CXF-1589?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Daniel Kulp reassigned CXF-1589:
--------------------------------
Assignee: Daniel Kulp
> Exception is thrown only the first time an error occur while trying to publish a webservice with HTTP transport
> ---------------------------------------------------------------------------------------------------------------
>
> Key: CXF-1589
> URL: https://issues.apache.org/jira/browse/CXF-1589
> Project: CXF
> Issue Type: Bug
> Components: Transports
> Affects Versions: 2.0.6
> Reporter: Kjell Winblad
> Assignee: Daniel Kulp
> Fix For: 2.0.7
>
> Original Estimate: 0.33h
> Remaining Estimate: 0.33h
>
> When a webservice with HTTP defined as transport is published with the following code and the service is already started at the defined publish address an exception is thrown which is a correct behaviour. The problem is that if the same publish code is executed again no error is thrown.
> try{
> Endpoint end = Endpoint.create(impl);
> endpoint = (EndpointImpl) end;
> endpoint.setWsdlLocation(wsdlfile);
> endpoint.publish();
> }catch(WebServiceException e){
> System.out.println(e);
>
> //The following error message will be printed if the address is already in use:
>
> //javax.xml.ws.WebServiceException: org.apache.cxf.interceptor.Fault: START_UP_SERVER_FAILED_MSG
> //org.apache.cxf.interceptor.Fault: START_UP_SERVER_FAILED_MSG
> //java.net.BindException: Address already in use
> }
> try{
> Endpoint end = Endpoint.create(impl);
> endpoint = (EndpointImpl) end;
> endpoint.setWsdlLocation(wsdlfile);
> endpoint.publish();
> }catch(WebServiceException e){
> System.out.println(e);
>
> //No exception is thrown this time even if the publish address is already in use
> }
> The problem seems to be in the method org.apache.cxf.transport.http_jetty.JettyHTTPServerEngine#addServant. The method has the following structure:
> public synchronized void addServant(URL url, JettyHTTPHandler handler) {
> if (server == null) {
> .... code to start server
> } catch (Exception e) {
> LOG.log(Level.SEVERE, "START_UP_SERVER_FAILED_MSG", new Object[] {e.getMessage()});
> //problem starting server
> try {
> server.stop();
> server.destroy();
> } catch (Exception ex) {
> //ignore - probably wasn't fully started anyway
> } // Add the following to fix the problem
> //finally{
> // server = null;
> //}
> throw new Fault(new Message("START_UP_SERVER_FAILED_MSG", LOG, e.getMessage()), e);
> }
> }
> The problem is that server field is not null the second time publish is called. Adding the expression "server = null;" in a finally block for the server.stop() and server.destroy() try seems to fix the problem.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.