Have you tried this with CXF 2.1.1 or 2.1 or other?
We did some work in 2.1.1 to hopefully help some of the issues, but
I'm not really sure about this specific issue.
In general, we kind of recommend using the spring dynamic modules for
OSGi. The servicemix 4 folks have an example at:
http://servicemix.apache.org/SMX4/cxf-examples.html#CXFexamples-Inside
that shows how that works. When you do that, all the spring config
things should work.
Dan
On Jun 27, 2008, at 12:02 PM, David Savage wrote:
Hi there,
I'm trying to get cxf to work in an OSGi environment and have been
banging my head against the desk a bit, suspect it might be due to
leaping in at the deep end but any help would be appreciated.
Ok here's what I've got working:
JaxWsServerFactoryBean svrFactory = new JaxWsServerFactoryBean();
svrFactory.setServiceClass(HelloWorld.class);
svrFactory.setServiceBean(HelloWorldImpl());
svrFactory.setAddress("http://localhost:9000/hello" );
svrFactory.create();
This launches an internal jetty server and when I test this using a
web browser I can at least see that the server is running as I get a
soap response:
<soap:Envelope>
<soap:Body>
<soap:Fault>
<faultcode>soap:Server</faultcode>
<faultstring>No such operation: </faultstring>
</soap:Fault>
</soap:Body>
</soap:Envelope>
However I've not been able to get a client working in OSGi.
Initially this was due to code in the
org.apache.cxf.frontend.ClientProxyFactoryBean which assumed the
classloader to generate the proxy would be the loader of the client
interface. I've worked around that in a local patch here by setting
Thread.contextClassLoader.
Here's what I have on the client side:
JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean();
factory.setServiceClass(reference.getInterface());
factory.setAddress("http://localhost:9000/hello");
// set context classloader
...
HelloWorld proxy = factory.create();
proxy.sayHello("World");
However the client still fails due to a null BindingDetails object
which is loaded when my test method is invoked:
javax.xml.ws.WebServiceException: Could not find wsdl:binding
operation info for web method sayHello.
at
org.apache.cxf.jaxws.JaxWsClientProxy.invoke(JaxWsClientProxy.java:
150)
at $Proxy35.sayHello(Unknown Source)
Is there a stage I'm missing here?
I'm also trying to get cxf to work with an https connection (both
client and server). On the server side I've figured out that the
process has something to do with doing something like:
server = svrFactory.create();
JettyHTTPDestination dest = (JettyHTTPDestination)
server.getDestination();
JettyHTTPServerEngine engine = (JettyHTTPServerEngine)
dest.getEngine();
if ( secure ) {
TLSServerParameters params = new TLSServerParameters();
// set params
engine.setTlsServerParameters(params);
}
But again I'm not having much luck. Is there any example code I can
follow or that someone can post to show how this should work?
Thanks in advance for any help.
Regards,
Dave
_______________________________________________________________________
Paremus Limited. Registered in England
No. 4181472
Registered Office: 22-24 Broad Street, Wokingham, Berks RG40 1BA
Postal Address: 107-111 Fleet Street, London, EC4A 2AB
The information transmitted is intended only for the person(s) or
entity to which it is addressed and may contain confidential and/or
privileged material. Any review, retransmission, dissemination or
other use of, or taking of any action in reliance upon, this
information by persons or entities other than the intended recipient
is prohibited.
If you received this in error, please contact the sender and delete
the material from any computer.
_______________________________________________________________________
---
Daniel Kulp
[EMAIL PROTECTED]
http://www.dankulp.com/blog