Hi Christian

Sorry for a delay,
On 02/03/12 10:18, cmueller wrote:
We deployed some Camel (2.6.0) routes which provides some JAX WS web services
via CXF (2.3.3) into ServiceMix (4.3.1). In the present implementation we
use "complete" URLs like "http://<server>:<port>/serviceName". Everything
works well so far.
Now, we want to benefit from the HTTP OSGI service. After the required
changes, everything still works well in principal. The only change we are
try to avoid is the changed service URL. The service in now available with
the URL "http://<server>:<port>/cxf/serviceName". We didn't want to tell all
our (internal) clients to change the URL. So, we created the file
$SMX_HOME/etc/org.apache.cxf.osgi.cfg with the following entry:
org.apache.cxf.servlet.context=/
It didn't work (we received a page from Jetty with all available services if
we request "http://<server>:<port>/serviceName").
Than we tried:
org.apache.cxf.servlet.context=
It also didn't work (we received a HTTP 404 response code if we request
"http://<server>:<port>/serviceName").

Any other idea to get this working or is this not possible / not supported
at the moment / a very bad idea / ...

I was curious myself whether it would work or not so I finally ended up debugging a bit into the pax-web code. For a start I think having a context like "/" set for CXF-enabled endpoints will most likely interfere with other bundles which may offer their own HTTP endpoints, for example, when Karaf starts, a webconsole feature registers a "/system/console" context, so a "/" context would catch the requests targeted at the webconsole feature. I temporarily removed a webconsole from the list of start-up features, but having "/" did not succeed anyway,

I was not really pursuing why, most likely it would conflict with the DefaultHttpContext. That could've been explored further but as I said it will most likely be not accepted due to possibility of such a context interfering with the other HTTP-aware bundles. I think it might be a minor bug in pax-web that "" and "/" context values are treated differently but the end result is effectively the same.

So suppose you have "http://<server>:<port>/serviceName" and you do not want to introduce an extra segment, like "/cxf" (default) or "/services", etc.

Then I guess you should set "org.apache.cxf.servlet.context=serviceName" and adjust the jaxws endpoint address attribute to "/". That will work but only for a given serviceName value

Cheers, Sergey


Thanks in advance,
Christian

--
View this message in context: 
http://cxf.547215.n5.nabble.com/changing-context-path-in-OSGI-from-cxf-to-tp5530551p5530551.html
Sent from the cxf-user mailing list archive at Nabble.com.


Reply via email to