An update. Using the JerseyTest framework, everything works fine. I
conclude (although I haven't figured out what), that there was an
error in my hand crafted requests. They failed using both curl and
Poster. At some point I may try Don's Proxy to see what the difference
is.
Thanks for the help.
Sean
On Fri, Apr 8, 2011 at 9:42 AM, Sean Landis <sean.landis_at_gmail.com> wrote:
> HI Jakub,
>
> I tried:
> curl -i -XPUT -H "Content-type:application/xml" --data "<?xml
> version=\"1.0\" encoding=\"UTF-8\"
> standalone=\"yes\"?><User><name>Joe</name></User>"
> http://localhost:9998/weblogs/joe
> HTTP/1.1 400 Bad Request
> server: grizzly/1.9.18
> Transfer-Encoding: chunked
> Date: Fri, 08 Apr 2011 15:38:34 GMT
> Connection: close
>
>
> The GET calls work great; I have three of them. I'm running the server
> inside Eclipse and I would expect Grizzly logging to go to the
> console. I'll poke around to see if they are getting written somewhere
> else.
> I ran 'mvn test' over the jaxb sample and it worked fine!
> Unfortunately, it doesn't do a PUT but does do several POSTs.
>
> Any other ideas would be much appreciated.
> Sean
>
> On Fri, Apr 8, 2011 at 8:22 AM, Jakub Podlesak
> <jakub.podlesak_at_oracle.com> wrote:
>> Hi Sean,
>>
>> The response is coming from Grizzly, not Jersey,
>> i.e. the request even does not make it to the Jersey runtime.
>> I don't know what could be wrong... Any suspicious log message?
>>
>> You may try to introduce a simple get method
>> on the resource to make sure, you have the url right...
>>
>> Another thing is the curl syntax. Your command should work,
>> byt anyway, i use a slightly different syntax:
>>
>> curl -i -XPUT -HContent-type:application/xml --data '<xml>data</xml>' $uri
>>
>> Does any of the above help?
>>
>> ~Jakub
>>
>> P.S. [1] includes quite a complex example of JAXB support in Jersey. You
>> might
>> want to check it out.
>>
>> [1]http://download.java.net/maven/2/com/sun/jersey/samples/jaxb/1.6/jaxb-1.6-project.zip
>>
>> On 04/07/2011 07:29 PM, Sean Landis wrote:
>>>
>>> Hi Jakub,
>>>
>>> Here's curl:
>>>
>>> c1inf-lm20553:messageData slandis$ curl -i --header "Content-Type:
>>> application/xml" --upload-file newuser.jaxb
>>> http://localhost:9998/weblogs/joe
>>> HTTP/1.1 400 Bad Request
>>> server: grizzly/1.9.18
>>> Transfer-Encoding: chunked
>>> Date: Thu, 07 Apr 2011 17:27:05 GMT
>>> Connection: close
>>>
>>>
>>> So it doesn't like the request but I can't see what's wrong here.
>>> If the request made it to the resource, then the call to
>>> createWeblog() would print out "Joe Blow".
>>>
>>> Sean
>>>
>>> On Thu, Apr 7, 2011 at 11:18 AM, Jakub Podlesak
>>> <jakub.podlesak_at_oracle.com> wrote:
>>>>
>>>> Hi Sean,
>>>>
>>>> the info message only tells you no provider was found within
>>>> your application. I.e. you should not bother with that informational
>>>> message, as long as you do not get any stack trace/error message.
>>>>
>>>> What does curl return, if you call it with the -i option?
>>>>
>>>> How did you check, the request did not make it to the resource?
>>>>
>>>> ~Jakub
>>>>
>>>> On 04/07/2011 06:39 PM, sean.landis_at_gmail.com wrote:
>>>>>
>>>>> HI,
>>>>> I am trying to get JAXB to work with a simple resource:
>>>>>
>>>>> ...
>>>>> @PUT @Path("{user}")
>>>>> @Consumes(MediaType.APPLICATION_XML)
>>>>> public void createWeblog(@PathParam("user") String user, User
>>>>> userData) {
>>>>> Bordello.get(WeblogsService.class).createWeblog(user, userData);
>>>>> }
>>>>>
>>>>> I am using Grizzly container. My curl command is:
>>>>> curl --header "Content-Type: application/xml" --upload-file
>>>>> newuser.jaxb http://localhost:9998/weblogs/joe
>>>>>
>>>>> and newuser.jaxb is:
>>>>> <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
>>>>> <User>
>>>>> <name>
>>>>> Joe Blow
>>>>> </name>
>>>>> </User>
>>>>>
>>>>> The JAXB entity is:
>>>>>
>>>>> @XmlRootElement
>>>>> public class User {
>>>>> private String name;
>>>>>
>>>>> public User() {}
>>>>> public User(String name) { setName(name); }
>>>>> public String getName() { return name; }
>>>>> public void setName(String name) { this.name = name; }
>>>>> }
>>>>>
>>>>> When I send the PUT request to the server I get the following:
>>>>>
>>>>> Apr 7, 2011 10:26:27 AM com.sun.jersey.api.core.PackagesResourceConfig
>>>>> init
>>>>> INFO: Scanning for root resource and provider classes in the packages:
>>>>> com.overstock.rest
>>>>> com.overstock.model
>>>>> Apr 7, 2011 10:26:27 AM com.sun.jersey.api.core.ScanningResourceConfig
>>>>> logClasses
>>>>> INFO: Root resource classes found:
>>>>> class com.overstock.rest.MyResource
>>>>> class com.overstock.rest.WeblogsResource
>>>>> Apr 7, 2011 10:26:27 AM com.sun.jersey.api.core.ScanningResourceConfig
>>>>> init
>>>>> INFO: No provider classes found.
>>>>> Apr 7, 2011 10:26:27 AM
>>>>> com.sun.jersey.server.impl.application.WebApplicationImpl _initiate
>>>>> INFO: Initiating Jersey application, version 'Jersey: 1.6 03/25/2011
>>>>> 01:14 PM'
>>>>>
>>>>>
>>>>> I don't know how to configure the provider. Please help!
>>>>>
>>>>
>>
>>
>