OK, I figured this out. You're missing a @WebService annotation on your
WidgetCatalog class. If you don't want to use any annotations, try using the
ReflectionServiceFactoryBean. (not sure why there isn't an error being
thrown, I'll see if I can fix that).

Also, your removeWidgets(...) method seems to cause problems for the http
binding because currently it assumes that remove/delete methods are
singular, not plular (i.e. deleteWidget). I would suggest adding an
@HttpResource for that method. I'll see if I can get it sorted inside the
HTTP binding, but I'm afraid it will depend on us detecting whether or not a
word is singular or plural to begin with - which is kind of hard :-).

Regards,
- Dan

On 5/29/07, Johnson, Eric <[EMAIL PROTECTED]> wrote:

As a test to make sure I didn't screw up stuff when I copied the
restful_http_binding demo as a starting point, I stripped out the
annotations, as well Web services endpoint, from the actual demo and got
the same result.

Putting the @HttpResource on the interface had no effect.



> -----Original Message-----
> From: Dan Diephouse [mailto:[EMAIL PROTECTED]
> Sent: Friday, May 25, 2007 1:35 PM
> To: [email protected]
> Subject: Re: Newby REST question
>
> You shouldn't need any annotations for the convention based
> mode to work.
> I'm not sure why Eric's example isn't working actually, so it
> looks like a bug to me. Which is kind of odd because I have a
> very similar unit test to what you've written. I'll have to
> take a more in depth look and get back to you.
>
> - Dan
>
> On 5/24/07, Freeman Fang <[EMAIL PROTECTED]> wrote:
> >
> > Hi Eric,
> >
> > You need add @HttpResource in WidgetCatalog interface, like
> we do in
> > CustomerService of restful demo.
> >
> > Thanks very much
> >
> > Freeman
> >
> >
> > Johnson, Eric wrote:
> > > I've got a class:
> > > package com.acme.customer;
> > >
> > > public interface WidgetCatalog
> > > {
> > >   Widgets getWidgets();
> > >
> > >   Widget getWidget(long id);
> > >
> > >   void addWidget(Widget widget);
> > >
> > >   void updateWidget(Widget w);
> > >
> > >   int removeWidgets(String type, int num);
> > >
> > >   void deleteWidget(Widget widget);
> > > }
> > >
> > > That I want to get working using the convention based
> REST stuff, so
> > > I publish it like this:
> > >
> > >        JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();
> > >         sf.setServiceClass(WidgetCatalog.class);
> > >
> > >         sf.setBindingId(HttpBindingFactory.HTTP_BINDING_ID);
> > >         sf.setAddress("http://localhost:9000/xml/";);
> > >
> > >         WidgetCatalogImpl bs = new WidgetCatalogImpl();
> > >         sf.getServiceFactory().setInvoker(new BeanInvoker(bs));
> > >
> > >         sf.getServiceFactory().setWrapped(true);
> > >
> > >         sf.create();
> > >
> > > When I try to access the getWidgets() method by going to
> > > http://localhost:9000/xml/widgets I get "Invalid URL/Verb
> combination.
> > > Verb: GET Path: /widgets."
> > >
> > > What did I do wrong? I basically copied most of the restfull_http
> > > demo and removed the annotations.
> > >
> > >
> >
> >
>
>
> --
> Dan Diephouse
> Envoi Solutions
> http://envoisolutions.com | http://netzooid.com/blog
>




--
Dan Diephouse
Envoi Solutions
http://envoisolutions.com | http://netzooid.com/blog

Reply via email to