(Restlet 2.0.7 SE, running in Equinox, with Jetty extension, J2SE 1.6.0_11,
Ubuntu 10.04)
I am trying to use the JAXB extension (via ClientResource) to serialize some
DTO's. I definitely have all the bundles specified in lib/readme.txt for the
JAXB extension loaded, and everything resolves. However, I getting this error
(more detail below) when trying to put a DTO from client to server:
May 7, 2011 1:10:39 PM org.restlet.resource.UniformResource doCatch
WARNING: Exception or error caught in resource
java.lang.NoClassDefFoundError: javax/xml/transform/sax/SAXSource
at org.restlet.ext.jaxb.JaxbConverter.toObject(JaxbConverter.java:155)
at
org.restlet.service.ConverterService.toObject(ConverterService.java:158)
I thought javax.xml.transform.sax.SAXSource was available from the J2SE. The
API docs for J2SE 1.6 say it is.
----------
My DTO class is annotated with JAXB annotations and I do have an ObjectFactory
class as well as a jaxb.index in the same package:
@XmlRootElement(name="example", namespace="http://example.com/example")
@XmlAccessorType(XmlAccessType.FIELD)
public class ExampleDTO
{
@XmlElement(required=true)
private String id;
public ExampleDTO()
{
super();
}
public String getId()
{
return id;
}
public void setId( String id )
{
this.id = id;
}
}
I have the following resource interface:
public interface ExampleResource
{
@Get("xml")
ExampleDTO retrieve();
@Put("xml")
void store( ExampleDTO dto );
}
that is implemented by a ServerResource class.
On the client, I have attempted to invoke the ExampleResource.store(ExampleDTO)
the following two ways:
ExampleDTO example = new ExammpleDTO();
example.setId( anId );
ClientResource clientResource = new ClientResource( uri );
clientResource.put( new JaxbRepresentation<ProgramDTO>(
MediaType.APPLICATION_XML, program ) );
and:
ExampleDTO example = new ExammpleDTO();
example.setId( anId );
ExampleResource exampleResource = new ClientResource( uri,
ExampleResource.class );
exampleResource.store( example );
In both cases, I get the same errors.
Client-side error:
Exception in thread "main" Internal Server Error (500) - Server Error
at
org.restlet.resource.ClientResource$1.invoke(ClientResource.java:1652)
at $Proxy6.store(Unknown Source)
at com.example.Client.putExample(Client.java:93)
Server-side error:
May 7, 2011 12:43:55 PM org.restlet.resource.UniformResource doCatch
WARNING: Exception or error caught in resource
java.lang.NoClassDefFoundError: javax/xml/transform/sax/SAXSource
at org.restlet.ext.jaxb.JaxbConverter.toObject(JaxbConverter.java:155)
at
org.restlet.service.ConverterService.toObject(ConverterService.java:158)
at
org.restlet.resource.UniformResource.toObject(UniformResource.java:644)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:431)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:490)
at org.restlet.resource.ServerResource.put(ServerResource.java:1139)
at org.restlet.resource.ServerResource.doHandle(ServerResource.java:375)
at
org.restlet.resource.ServerResource.doNegotiatedHandle(ServerResource.java:591)
at
org.restlet.resource.ServerResource.doConditionalHandle(ServerResource.java:299)
at org.restlet.resource.ServerResource.handle(ServerResource.java:846)
at org.restlet.resource.Finder.handle(Finder.java:510)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:497)
at org.restlet.routing.Router.handle(Router.java:737)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
at
org.restlet.engine.application.ApplicationHelper.handle(ApplicationHelper.java:72)
at org.restlet.Application.handle(Application.java:388)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:497)
at org.restlet.routing.Router.handle(Router.java:737)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Router.doHandle(Router.java:497)
at org.restlet.routing.Router.handle(Router.java:737)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at
org.restlet.engine.application.StatusFilter.doHandle(StatusFilter.java:151)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.routing.Filter.doHandle(Filter.java:156)
at org.restlet.routing.Filter.handle(Filter.java:203)
at org.restlet.engine.ChainHelper.handle(ChainHelper.java:111)
at org.restlet.Component.handle(Component.java:387)
at org.restlet.Server.handle(Server.java:488)
at org.restlet.engine.ServerHelper.handle(ServerHelper.java:71)
at
org.restlet.engine.http.HttpServerHelper.handle(HttpServerHelper.java:150)
at
org.restlet.ext.jetty.JettyServerHelper$WrappedServer.handle(JettyServerHelper.java:167)
at
org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:594)
at
org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:1059)
at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:856)
at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:211)
at
org.eclipse.jetty.server.HttpConnection.handle(HttpConnection.java:424)
at
org.eclipse.jetty.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:506)
at
org.eclipse.jetty.util.thread.QueuedThreadPool$2.run(QueuedThreadPool.java:436)
at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.ClassNotFoundException: javax.xml.transform.sax.SAXSource
at
org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
at
org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
at
org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
... 54 more
May 7, 2011 12:43:55 PM org.restlet.engine.log.LogFilter afterHandle
INFO: 2011-05-07 12:43:55 127.0.0.1 - 127.0.0.1
8182 PUT /programs/current -500 426 - 29
http://localhost:8182 Restlet-Framework/2.0.7 -
------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=2732393