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