gpt4 book ai didi

java - 序列化包含 List 字段的对象

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:15 28 4
gpt4 key购买 nike

我有一个 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 服务创建软件向我返回了相同的错误。不是可以添加带参数的方法吗?

EDIT4:我创建了一个假方法只是为了测试问题所在。似乎当我在方法签名中包含参数时,我遇到了先前的错误。

//Not working code
public StatePayment lol(Buyer buyer){

return StatePayment.DENIED;
}

//Working code
public StatePayment lol(Buyer buyer){

return StatePayment.DENIED;
}

我猜问题出在买家身上,但我不知道可能是什么。

编辑3:当我想通过“new->WebService->选择方法来创建webService时。我有以下错误:

IWAB0398E Error in generating WSDL from Java: >java.lang.IllegalStateException: Error looking for paramter names in >bytecode: unexpected bytes in file

这是序列化问题吗?

当我选择此方法时发生错误:

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:警告消息

The service class "MlvDataBaseImpl" does not comply to one or more requirements of the JAX-RPC 1.1 specification, and may not deploy or function correctly.

The method "exportObject" on the service class "MlvDataBaseImpl" is overloaded. Overloaded methods are allowed by chapter 5.5.5 of the JAX-RPC 1.1 specification, however, some JAX-RPC 1.1 compliant tools may not allow overloaded methods or may generate WSDL with overloaded operations as contrary to rule R2304 of the WS-I Basic Profile.

The value type "MlvDataBase" used via the service class "MlvDataBaseImpl" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise, a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.

The value type "Renter" used via the service class "MlvDataBaseImpl" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.

The value type "Vehicle" used via the service class "MlvDataBaseImpl" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.

The value type "Buyer" used via the service class "MlvDataBaseImpl" does not have a public default constructor. Chapter 5.4 of the JAX-RPC 1.1 specification requires a value type to have a public default constructor, otherwise, a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the value type during deserialization.

The method "registerVehicle" on the service class "MlvDataBaseImpl" uses a data type, "java.time.LocalDate", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "getRentableVehicles" on the service class "MlvDataBaseImpl" uses a data type, "java.util.List", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "clone" on the service class "MlvDataBaseImpl" uses a data type, "java.lang.Object", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.server.RemoteStub", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.server.RMIClientSocketFactory", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "exportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.server.RMIServerSocketFactory", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "unexportObject" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "setLog" on the service class "MlvDataBaseImpl" uses a data type, "java.io.OutputStream", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "getLog" on the service class "MlvDataBaseImpl" uses a data type, "java.io.PrintStream", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "getRef" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.server.RemoteRef", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "toStub" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "toStub" on the service class "MlvDataBaseImpl" uses a data type, "java.rmi.Remote", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The method "equals" on the service class "MlvDataBaseImpl" uses a data type, "java.lang.Object", that is not supported by the JAX-RPC specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The service class "MlvDataBaseImpl" does not have a public default constructor. Chapter 10.1 of the JAX-RPC 1.1 specification requires a service class to have a public default constructor, otherwise a JAX-RPC 1.1 compliant Web service engine may be unable to construct an instance of the service class to handle an incoming request message.

The field or property "declaringClass" on the value type "java.lang.Enum" used via the service class "MlvDataBaseImpl" has a data type, "java.lang.Class", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The field or property "depositDate" on the value type "Vehicle" used via the service class "MlvDataBaseImpl" has a data type, "java.time.LocalDate", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The field or property "comments" on the value type "Vehicle" used via the service class "MlvDataBaseImpl" has a data type, "java.util.List", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The field or property "scores" on the value type "Vehicle" used via the service class "MlvDataBaseImpl" has a data type, "java.util.List", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The field or property "declaringClass" on the value type "java.lang.Enum" used via the service class "MlvDataBaseImpl" has a data type, "java.lang.Class", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

The field or property "shoppingCart" on the value type "Buyer" used via the service class "MlvDataBaseImpl" has a data type, "java.util.ArrayList", that is not supported by the JAX-RPC 1.1 specification. Instances of the type may not serialize or deserialize correctly. Loss of data or complete failure of the Web service may result.

最佳答案

请看这篇文章JAXB annotations for nested element lists有关更多详细信息,请参阅如何序列化列表。

至于警告,你需要在SO中逐一搜索,涉及到许多不同的主题。

关于java - 序列化包含 List 字段的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40437508/

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