On Thu, Jun 10, 2010 at 3:03 PM, Philippe Frangioni <[email protected]> wrote:
> Hi all,
>
> As part of my current project, I need to expose a Spring Bean as a Web
> Service. (I'm new to Web Services.) We're using Axis2 1.5.1.
> The project is built with maven2 and produces a war. We want the Web Service
> to be part of the Webapp (we do not want to deploy the Axis2 webapp and use
> an aar).
>
> I've read the POJO Guide here:
> http://ws.apache.org/axis2/1_5_1/pojoguide.html
> and the Spring Guide here:
> http://ws.apache.org/axis2/1_5_1/spring.html
> This page:
> http://wso2.org/library/90
> also helped me on how to embed an Axis2 Web Service in our webapp.
>
> Good news is that I got something working. But it's not fully working and
> there are still a few things not clear to me:
>
> First, I haven't written a WSDL file. Only a services.xml. But when I reach
> the URL:
> http://domain/services/myService?wsdl
> ...I do get a WSDL. So I guess it's generated by Axis2 based on the
> services.xml and on the bean itself. My first question is: is it a good way
> to go? Or should I write a WSDL?
>

IMHO you don't need your own wsdl.

>
> My second question is about the parameters we can or cannot use in web
> services:
>
> The interface of the bean exposed as a web service looks like:
>
> public interface MyService
> {
>     String getName(String name);
>     MyObject createMyObject(Map<String, String> properties)
>     MyObject updateMyObject(MyObject object, Map<String, String>
> newProperties);
>     MyObject removeMyObject(MyObject object);
> }
>
> and the MyObject class is:
>
> public class MyObject
> {
>     public enum Status {
>       Success,
>       Error,
>       Invalid
>     }
>
>   private Status status;
>   private long id;
>   private String field1;
>   private String field2;
>
>   // + getters and setters for each field
> }
>
> With my Web Service client (which uses an RPCServiceClient), I can call the
> String getName(String name) method successfully, but not the other ones.
> I have 2 problems with the other methods:
> First, they are using Map<String, String> as parameters. I read a lot of
> posts about that and it seems using java specific classes in web services is
> not a good thing since web services are supposed to be platform/language
> independent.
> But I know for sure that my project will be 100% Java, so I'd like to use
> Maps anyway. And since the posts I read were quite old, I was wondering if
> there is now an easy way to do that? Maybe using JiBX ? Would it be
> compatible with a POJO/Spring web service?
>

IIRC, The axis2 java collections pojo support is spotty. I don't
remember if Map is supported or not. My recommendation is to send
arrays, and use the java api for things like Arrays.asList() to
convert to your app level needs,

> Second, I have a problem with the serialization of the MyObject class: I get
> an error related to the status field. The error says something like "Status
> type has no constructor...." Anyone know about that?
>

Not sure on this one. Try adding a no-arg constructor.

> Last thing, I'll have to make this web service secure. Is Rampart the way I
> should go? Can I integrate it with a POJO/Spring web service?
>

In many cases just using https is sufficient.

> Any help would be much appreciated!
> Thank you,
> Phil.
>

- R

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to