com.thoughtworks.xstream.security.ForbiddenClassException将其用作安全框架
我在将xstream(1.4.8)lib更新到我们其中一个Web应用程序中的最新版本时遇到了此异常。异常是从使用旧版本的xstream(1.3.1)编译的依赖jar中抛出的pojo。我使用xstream-1.4.8重新编译并构建了新的jar(依赖jar),并再次部署了war文件,但仍然得到相同的例外。最初我认为这是由于版本不匹配,我现在不确定是什么导致了这种异常,而且网上没有太多的文档。有什么想法吗?
谢谢,卡西克
引发异常的实际调用:
TestList list = (TestList)xs.fromXML(new StringReader(testData));
其中 testData 是 xml 字符串
测试列表.java类
@XStreamAlias("Assets")
public class TestList extends ParentObject {
@XStreamImplicit(itemFieldName = "item")
protected List<Item> item= new ArrayList<Item>();
public void add(Item item) {
item.add(item);
}
public List<Item> getItems() {
if(item== null)
return new ArrayList<Item>();
else
return item;
}
@Override
public String getStringData() {
StringBuilder builder = new StringBuilder();
for (Item item : items) {
builder.append(item.getStringData());
builder.append("---------------\n");
}
return builder.toString();
}
@Override
public String getDataType() {
// TODO Auto-generated method stub
return null;
}
项目.java类:
@XStreamAlias("Item")
public class Item extends ParentItem {
@XStreamAsAttribute
public String access_test;
@XStreamAsAttribute
public int test_num;
@XStreamAsAttribute
public int test_type;
@XStreamAsAttribute
public boolean tst_item;
@XStreamAsAttribute
public int test_test_est;
@XStreamAlias("eset_test")
public List<Integer> eset_test;
当然,我有我在这里不包括的getter和setters。
例外:
com.thoughtworks.xstream.security.ForbiddenClassException: com.test.cp.test123.pojo.TestList
at com.thoughtworks.xstream.security.NoTypePermission.allows(NoTypePermission.java:26)
at com.thoughtworks.xstream.mapper.SecurityMapper.realClass(SecurityMapper.java:74)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.MapperWrapper.realClass(MapperWrapper.java:30)
at com.thoughtworks.xstream.mapper.CachingMapper.realClass(CachingMapper.java:47)
at com.thoughtworks.xstream.core.util.HierarchicalStreams.readClassType(HierarchicalStreams.java:29)
at com.thoughtworks.xstream.core.TreeUnmarshaller.start(TreeUnmarshaller.java:133)
at com.thoughtworks.xstream.core.AbstractTreeMarshallingStrategy.unmarshal(AbstractTreeMarshallingStrategy.java:32)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1206)
at com.thoughtworks.xstream.XStream.unmarshal(XStream.java:1190)
at com.thoughtworks.xstream.XStream.fromXML(XStream.java:1061)