我有一个WebService,它将车辆列表发送到Web服务客户端,车辆实现如下:
public class Vehicle implements Serializable{
private static final long serialVersionUID = -8169481181178317205L;
private final String id;
private final LocalDate depositDate;
private final double price;
private final ArrayList<Integer> scores = new ArrayList<>();
private final ArrayList<String> comments = new ArrayList<>();
private Optional<Renter> renter = Optional.empty();
private int rentalNumber = 0;
}
如您所见,车辆对象包含2个ArrayList的字段。当我想创建Web服务时,我有多个警告告诉我Vehicle(我想通过网络发送的唯一对象)和其他对象不符合JAX-RPC约定,可能无法正常发送
如何摆脱这些警告?这是义务吗?
我实现的第一个解决方案是将列表转换为数组,但还有其他什么吗?
编辑5:问题来自于在我想要用于Web服务的方法中添加参数。我试图添加如下方法:
public StatePayment lol(int lol){
return StatePayment.DENIED;
}
Web Services Creation软件也给我带来了同样的错误。是不是可以添加带参数的方法?
EDIT4:我创建了一个假方法来测试问题所在。似乎当我在方法签名中有参数时,我有先例错误。
//Not working code
public StatePayment lol(Buyer buyer){
return StatePayment.DENIED;
}
//Working code
public StatePayment lol(Buyer buyer){
return StatePayment.DENIED;
}
我想这个问题来自买家,但我无法得到它可能是什么。
编辑3:当我想通过&#34; new-&gt; WebService-&gt;创建webService时选择方法。 我有以下错误:
IWAB0398E从Java生成WSDL时出错:&gt; java.lang.IllegalStateException:在&gt;字节码中查找参数名称时出错:文件中的意外字节
这是序列化问题吗?
选择此方法时会发生错误:
public int proceedToPayment(Buyer buyer) {
//Calcul du prix total du shoppingCart
long totalPrice = 0;
for(Vehicle v : buyer.getShoppingCart()) {
totalPrice += v.getPrice();
}
Bank buyerBank = buyer.getBank();
//Convertir totalPrice en euros vers la monnaie du Buyer.
if(buyerBank.bankTransaction(totalPrice, buyer) == StatePayment.DENIED) {
return 0;
}
removeShoppingCartFromBDD(buyer.getShoppingCart());
return 1;
}
编辑2:更清楚的是,我的主要问题是。我被迫摆脱所有这些警告信息,知道我将通过网络发送的唯一对象是车辆和车辆内的那些(租客)
编辑1:警告信息
服务类&#34; MlvDataBaseImpl&#34;不符合一个或多个 JAX-RPC 1.1规范的要求,可能不会部署或 功能正常。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34;是 超载。第5.5.5节允许重载方法 但是,JAX-RPC 1.1规范是一些符合JAX-RPC 1.1标准的工具 可能不允许重载方法或可能生成重载的WSDL 操作与WS-I Basic Profile的规则R2304相反。
值类型&#34; MlvDataBase&#34;通过服务类使用 &#34; MlvDataBaseImpl&#34;没有公共默认构造函数。章节 JAX-RPC 1.1规范的5.4要求值类型具有公共默认构造函数,否则需要符合JAX-RPC 1.1的Web 服务引擎可能无法构造值的实例 在反序列化期间键入。
价值类型&#34; Renter&#34;通过服务类使用&#34; MlvDataBaseImpl&#34; 没有公共默认构造函数。 JAX-RPC的第5.4章 1.1规范要求值类型具有公共默认构造函数,否则符合JAX-RPC 1.1的Web服务引擎可能 无法在期间构造值类型的实例 反序列化。
价值类型&#34;车辆&#34;通过服务类使用 &#34; MlvDataBaseImpl&#34;没有公共默认构造函数。章节 JAX-RPC 1.1规范的5.4要求值类型具有公共默认构造函数,否则需要符合JAX-RPC 1.1的Web 服务引擎可能无法构造值的实例 在反序列化期间键入。
价值类型&#34;买方&#34;通过服务类使用&#34; MlvDataBaseImpl&#34; 没有公共默认构造函数。 JAX-RPC的第5.4章 1.1规范要求值类型具有公共默认构造函数,否则,可以使用符合JAX-RPC 1.1的Web服务引擎 无法在期间构造值类型的实例 反序列化。
方法&#34; registerVehicle&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.time.LocalDate&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; getRentableVehicles&#34;在服务类上 &#34; MlvDataBaseImpl&#34;使用数据类型&#34; java.util.List&#34;,但不是 由JAX-RPC规范支持。该类型的实例可能不会 正确序列化或反序列化。数据丢失或完全失败 可能会导致Web服务。
方法&#34;克隆&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.lang.Object&#34;,JAX-RPC不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用不受支持的数据类型&#34; java.rmi.server.RemoteStub&#34; 通过JAX-RPC规范。该类型的实例可能无法序列化 或正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.server.RMIClientSocketFactory&#34;,即 JAX-RPC规范不支持。该类型的实例可能 没有正确序列化或反序列化。数据丢失或完整 可能导致Web服务失败。
方法&#34; exportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.server.RMIServerSocketFactory&#34;,即 JAX-RPC规范不支持。该类型的实例可能 没有正确序列化或反序列化。数据丢失或完整 可能导致Web服务失败。
方法&#34; unexportObject&#34;在服务类&#34; MlvDataBaseImpl&#34; 使用数据类型&#34; java.rmi.Remote&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; setLog&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.io.OutputStream&#34;,不受支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; getLog&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.io.PrintStream&#34;,JAX-RPC不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
方法&#34; getRef&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.rmi.server.RemoteRef&#34;,不支持 JAX-RPC规范。该类型的实例可能无法序列化或 正确反序列化。数据丢失或Web完全失败 可能会导致服务。
方法&#34; toStub&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.rmi.Remote&#34;,JAX-RPC不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
方法&#34; toStub&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.rmi.Remote&#34;,JAX-RPC不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
方法&#34;等于&#34;在服务类&#34; MlvDataBaseImpl&#34;用一个 数据类型&#34; java.lang.Object&#34;,JAX-RPC不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
服务类&#34; MlvDataBaseImpl&#34;没有公开默认值 构造函数。 JAX-RPC 1.1规范的第10.1章要求a 服务类有一个公共默认构造函数,否则一个 符合JAX-RPC 1.1的Web服务引擎可能无法构造 用于处理传入请求消息的服务类的实例。
字段或属性&#34;声明类&#34;在值类型上 &#34; java.lang.Enum中&#34;通过服务类使用&#34; MlvDataBaseImpl&#34;有个 数据类型&#34; java.lang.Class&#34;,JAX-RPC 1.1不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
字段或属性&#34; depositDate&#34;关于价值类型&#34; Vehicle&#34;用过的 通过服务类&#34; MlvDataBaseImpl&#34;有一个数据类型, &#34; java.time.LocalDate&#34;,JAX-RPC 1.1不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
字段或属性&#34;评论&#34;关于价值类型&#34; Vehicle&#34;用过的 通过服务类&#34; MlvDataBaseImpl&#34;有一个数据类型, &#34; java.util.List&#34;,JAX-RPC 1.1不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
字段或属性&#34;得分&#34;关于价值类型&#34; Vehicle&#34;通过使用 服务类&#34; MlvDataBaseImpl&#34;有一个数据类型,&#34; java.util.List&#34;, JAX-RPC 1.1规范不支持。实例 该类型可能无法正确序列化或反序列化。数据丢失或 可能会导致Web服务完全失败。
字段或属性&#34;声明类&#34;在值类型上 &#34; java.lang.Enum中&#34;通过服务类使用&#34; MlvDataBaseImpl&#34;有个 数据类型&#34; java.lang.Class&#34;,JAX-RPC 1.1不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
字段或属性&#34; shoppingCart&#34;关于价值类型&#34;买方&#34;用过的 通过服务类&#34; MlvDataBaseImpl&#34;有一个数据类型, &#34; java.util.ArrayList&#34;,JAX-RPC 1.1不支持 规格。该类型的实例可能无法序列化或反序列化 正确。数据丢失或Web服务完全失败可能 结果
答案 0 :(得分:0)
请查看此帖子JAXB annotations for nested element lists,详细了解如何序列化列表。
至于警告,您需要在SO中搜索每个警告,涉及许多不同的主题。