Hi
On 08/11/11 13:16, Jon Barber wrote:
On Tuesday, November 08, 2011 10:02 AM, "Jon Barber"
<jon.bar...@acm.org> wrote:
Apologies for the delayed reply. Comments in line below.
On Monday, October 31, 2011 10:28 PM, "Sergey Beryozkin"
<sberyoz...@gmail.com> wrote:
Hi
On 27/10/11 16:28, Jon Barber wrote:
Hi List,
I've managed to get CXF DOSGi 1.2 working with JSON responses following
the discussions I found on this list. However, I've hit a problem when I
try to use the OSGi HTTP Service via the
org.apache.cxf.ws.httpservice.context property.
So I've adapted the greeter rest sample from the distribution and added
the following properties to the services :
props.put("service.exported.interfaces", "*");
props.put("service.exported.configs", "org.apache.cxf.rs");
props.put("service.exported.intents", "HTTP");
props.put("org.apache.cxf.rs.provider","org.apache.cxf.jaxrs.provider.AegisElementProvider,org.apache.cxf.jaxrs.provider.AegisJSONProvider");
Then for the first case I register an address for the service to use,
e.g.
props.put("org.apache.cxf.rs.address","http://localhost:8282/greeter2");
This works like a charm : curl
http://localhost:8282/greeter2/greeter/greeting/fred
{"ns1.GreeterInfo":{"@xsi.type":"ns1:GreeterInfo","ns1.greetings":{"ns1.GreetingPhrase":[{"@xsi.type":"ns1:GreetingPhrase","ns1.name":"fred","ns1.phrase":"Hello"},{"@xsi.type":"ns1:GreetingPhrase","ns1.name":"fred","ns1.phrase":"Hoi"},{"@xsi.type":"ns1:GreetingPhrase","ns1.name":"fred","ns1.phrase":"Hola"},{"@xsi.type":"ns1:GreetingPhrase","ns1.name":"fred","ns1.phrase":"Bonjour"}]}}}
<snip/>
Caused by: java.lang.IllegalArgumentException: No SchemaFactory that
implements the schema language specified by:
http://www.w3.org/2001/XMLSchema could be loaded
at javax.xml.validation.SchemaFactory.newInstance(Unknown
Source)
at
org.apache.cxf.aegis.type.XMLTypeCreator.<clinit>(XMLTypeCreator.java:118)
This is using Java 1.6.0_27, CXF DOSGi 1.2 and Felix 3.2.2. I configured
felix as per the conf in the cxf distribution with the addition of the
jettison jar and my modified greeter bundle - config is viewable at
http://pastebin.com/m8Qa8pLw
I vaguely recall seeing something like that before.
Does it happen with Aegis only, when requesting JSON or XMl or both ?
Can you please try JAXB ?
OK, I'll try and find out how I use JAXB in place of Aegis. Could you
provide a pointer to some docs etc ?
OK, so I set the "org.apache.cxf.ws.databinding" property to "jaxb" and
I still get exactly the same stack trace.
That is a ws-specific property, given that JAX-RS is used, just remove
>>>>
props.put("org.apache.cxf.rs.provider","org.apache.cxf.jaxrs.provider.AegisElementProvider,org.apache.cxf.jaxrs.provider.AegisJSONProvider");
as in case of JAX-RS JAXB is selected by default.
"org.apache.cxf.rs.databinding" is kind of ignored by the JAX-RS
handler, unless "aegis" is set
thanks, Sergey
I can work around this, in that if I set the address to be the same as
the OSGi HTTP service is already using then that works fine,
Can you clarify it please ?
So I mean that if the HTTP service is configured to listen to port 9000
then if I set the property like this :
props.put("org.apache.cxf.rs.address","http://localhost:9000/greeter2");
then that works fine.
However, I'd rather not do that (set an absolute address) as we have
different configurations for our different environments.
Cheers, Sergey
but I'd
rather not do that as we would need to remember to change the property
if we ever change the port to be consistent.
Any help would be gratefully received.
Thanks,
Jon.