cxf-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Christian Connert (JIRA)" <j...@apache.org>
Subject [jira] Commented: (CXF-2570) ServletDestinationFacotry and Tomcat can't locate services
Date Fri, 04 Dec 2009 07:27:20 GMT

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

Christian Connert commented on CXF-2570:
----------------------------------------

O.k,

I'm trying to descripe the problem in detail:

first I've some wsdl with the following soap location:

<soap:address location="http://192.168.130.7:8080/BasicBusinessServices/services/OrderService"
/>

It's also used by clients to know the location of the service endpoint.

The ServletTransportFactory only removes the prefixs http://localhost/ and https://localhost/,
thus in my case no prefixes are removed and the services are stored by the full path in the
destinations map.

When invoking the service the ServletController uses the following line in the invoke method
(line 131):

String address = request.getPathInfo() == null ? "" : request.getPathInfo();

For my sample this call returns "/OrderService", but since the ServletTransportFactory destinations
map uses the full path as key (http://192.168.130.7:8080/BasicBusinessServices/services/OrderService)
the ServletController calls ServletDestination d = getDestination(ei.getAddress()); (line
135) but this returns null and the call ends in the following code (line 153 - 157) of the
ServletController:

 if (d == null || d.getMessageObserver() == null) {                        
                        LOG.warning("Can't find the request for " 
                                    + request.getRequestURL() + "'s Observer ");
                        generateNotFound(request, res);
 } 

> ServletDestinationFacotry and Tomcat can't locate services
> ----------------------------------------------------------
>
>                 Key: CXF-2570
>                 URL: https://issues.apache.org/jira/browse/CXF-2570
>             Project: CXF
>          Issue Type: Bug
>         Environment:   	
> « Hide
> System:
> 2.6.28-15-generic #52-Ubuntu SMP Wed Sep 9 10:48:52 UTC 2009 x86_64 GNU/Linux
> Java:
> java version "1.6.0_16"
> Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
> Java HotSpot(TM) 64-Bit Server VM (build 14.2-b01, mixed mode)
> Apache CXF 2.2.3 (not in version list)
>            Reporter: Christian Connert
>         Attachments: cxf.xml, TomcatDestinationFactory.java
>
>
> The problem is that the service destinations aren't found by the destination factory.
> I think this problem isn't Tomcat specific. It should occur if cxf is deployed as a war
inside some application server.
> I would suggest the following workaround:
> 1.) Implement a ServletTransportFactory (see attachment 1)
> 2.) Register this ServletTransportFactory in the default cxf.xml (classpath root, see
attachment 2)
> As a clean fix the ServletTransportFactory should make the static String getTrimmedPath(String
path) method to a protected non static method. Than it can be easily overriden by custom subclasses.
> Greetings

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message