Я создал два точно таких же класса в двух разных пакетах и два разных .jars. com.test загружается глобально (помещается в/lib/ext /) в Tomcat7, а es.package загружается как зависимость портлета.GSON, @SerializedName не учитывается, когда класс загружен в разные области.
import com.google.gson.annotations.SerializedName;
import java.io.Serializable;
public class RequestBean implements Serializable {
@SerializedName("SOMETHING")
private String id;
@SerializedName("CUENTA")
private String account;
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
При наличии следующего кода в портлет:
com.test.RequestBean localBean = new com.test.RequestBean();
localBean.setAccount("account");
localBean.setId("100");
es.package.RequestBean globalBean = new es.package.RequestBean();
globalBean.setAccount("account");
globalBean.setId("100");
System.out.println(gson.toJson(localBean, localBean.getClass()).toString());
System.out.println(gson.toJson(globalBean, globalBean.getClass()).toString());
К моему удивлению, результат отличается. Для globalBean @SerializedName не учитывается. Что может быть причиной? Глобальный класс доступен в глобальной области, а локальный - только для области портлета.
{"SOMETHING":"100","CUENTA":"account"}
{"id":"100","account":"account"}