gpt4 book ai didi

java - CXF 的包装原语

转载 作者:行者123 更新时间:2023-12-01 15:30:00 24 4
gpt4 key购买 nike

我有时需要通过 Web 服务发送原语列表,例如作为运行存储过程的参数。在Java中基本上我有List。这不适用于 CXF。我最终做了 List,其中 SimpleDataItem 是附加的代码。这是一个好主意,还是有更好的方法?

我基本上正在执行一个我希望看起来像这样的函数:

ResultSet executeStoredProc(String procName, Object... args) throws SQLException;

现在 SimpleDataItem 看起来像这样:

public class SimpleDataItem {
private String s;
private Long l;
private Integer i;
private BigDecimal d;
private Boolean b;
private Long t;
private byte[] ba;



public SimpleDataItem() {

}

public SimpleDataItem(Object o) {
doSetObject(o);
}

public void doSetObject(Object o) {
if (o==null) {
return;
}
if (o instanceof String ) {
s=(String)o;
return;
}
if (o instanceof Long ) {
l=(Long)o;
return;
}
if (o instanceof Integer ) {
i=(Integer)o;
return;
}
if (o instanceof BigDecimal) {
d=(BigDecimal)o;
return ;
}

if (o instanceof Boolean) {
b=(Boolean)o;
return ;
}
if (o instanceof Timestamp) {
t=((Timestamp)o).getTime();
return;
}
if (o instanceof byte[]) {
ba=(byte[])o;
}

}

public Object doGetObject() {
if (s!=null) {
return s;
}
if (l!=null) {
return l;
}
if (i!=null) {
return i;
}
if (d!=null) {
return d;
}
if (b!=null) {
return b;
}
if (t!=null) {
return new Timestamp(t);
}
if (ba!=null) {
return ba;
}
return null;
}

/**
* @return the ba
*/
public byte[] getBa() {
return ba;
}

/**
* @param ba the ba to set
*/
public void setBa(byte[] ba) {
this.ba = ba;
}

public String getS() {
return s;
}

public void setS(String s) {
this.s = s;
}

public Long getL() {
return l;
}

public void setL(Long l) {
this.l = l;
}

public Integer getI() {
return i;
}

public void setI(Integer i) {
this.i = i;
}

public BigDecimal getD() {
return d;
}

public void setD(BigDecimal d) {
this.d = d;
}

public Boolean getB() {
return b;
}

public void setB(Boolean b) {
this.b = b;
}

public Long getT() {
return t;
}

public void setT(Long t) {
this.t = t;
}

public String toString() {
Object o=doGetObject();
if (o!=null) {
return o.toString();
}
return null;
}
}

这是个好主意吗?有更好的方法吗?

最佳答案

这不是 CXF 问题,而是 Web 服务问题。您正在尝试发送多态数据结构。因此,您需要一个使用可能类型的 XML 模式联合的模式。

参见JAXB - Unmarshalling polymorphic objects .

关于java - CXF 的包装原语,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651320/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com