java webservice 泛型_java – jax-ws webservice中泛型类会发生什么?

您将在客户端获取List(如果WS使用者使用其他语言编写,则为MyCustomClass对象数组).这不会是个问题.记住始终编程到接口.

看起来你仍然没有太多练习用Java创建WS,所以我会给你一些建议:

>您不得发送包含循环引用的2个或更多对象,否则将以循环引用问题结束.这是因为JAX-WS工具将为请求创建一个无限的XML响应.可能很难发现.我们来看一个案例:

public class ClassA {

ClassB instanceOfB;

//getters and setters...

}

public class ClassB {

ClassA instanceOfA;

//getters and setters...

}

public class MyJAXWS {

@WebMethod

public ClassA getClassA() {

ClassA classA = new ClassA();

ClassB classB = new ClassB();

classB.setInstanceOfA(classA);

classA.setInstanceOfB(classB);

return classA; //boom! circular reference problems!

}

}

>您必须始终在返回类中具有接口,而不是特定的Java库类.这意味着,您的类应该具有List,Set和Map(在容器的情况下),因为此接口比实现类更高级别,并且如果非Java客户端尝试使用您的Web服务方法,则可能会遇到问题.

public class ClassC {

List lstClassA; //good!

ArrayList alstClassB; //not very flexible with other languages =\

}

>将通过Web服务的类应该是POJO(Plain Old Java Objects),而不是服务或业务逻辑层类.为什么?因为在与客户端通信时,只有属性值将被编组/解组,所以Web服务的合同中不会出现任何方法代码.

public class ClassD {

private int intValue;

//naive business logic method

//won't be generated in the WSDL for the clients/consumers of the Web Services

public void printIntValue() {

//pretty simple implementation

System.out.println(this.intValue);

}

}

我在上一次使用Java的SOA项目中遇到了这三个问题.我希望其他人可以增强这个答案或提供链接信息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值