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]