在jdk1.6中,当我设置时
transformerFactory.setFeature(XMLConstants.ACCESS_EXTERNAL_DTD, false)
我面临以下错误:
javax。xml。使改变TransformerConfiguration异常:无法设置功能'http://javax.xml.XMLConstants/property/accessExternalDTD'在此TransformerFactory上。位于组织。阿帕奇。泽兰。加工机TransformerFactoryImpl。setFeature(TransformerFactoryImpl.java:418)
正如我在这里所发现的:如何预防xalan。具有META-INF\services\javax的jar。xml。使改变TransformerFactory是否将接管JDK 1.6内置的Xalan实现?我无法进行此处建议的更改,因为我的管理员会审查其他API冲突。
根据此链接:http://xml.apache.org/xalan-j/features.html#domsource您可以使用TransformerFactory。setFeature(String,boolean)方法设置特征值。XalanJava只支持设置XMLConstants。FEATURE\u SECURE\u处理功能。对于所有其他功能,TransformerFactory公开其值,但不能更改其状态。
因此,似乎只有使用TransormerFactory的xalan实现,我们才能设置此功能。
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
最后,我的问题是:如果我们设置了功能:
transformerFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
然后是另一个功能(XMLContain.ACCESS_EXTERNAL_DTD
)自动设置为false。
我从我设置的日志中得到上述功能为“false”。但我想确定access ExternalDTD
功能是否默认设置为false,或者安全处理功能是否设置为true。
从源代码看,其他功能在XMLConstants时不会更新。FEATURE\u SECURE\u PROCESSING更新:
public void setFeature(String name, boolean value)
throws TransformerConfigurationException {
// feature name cannot be null
if (name == null) {
throw new NullPointerException(
XSLMessages.createMessage(
XSLTErrorResources.ER_SET_FEATURE_NULL_NAME, null));
}
// secure processing?
if (name.equals(XMLConstants.FEATURE_SECURE_PROCESSING)) {
m_isSecureProcessing = value;
}
// This implementation does not support the setting of a feature other than
// the secure processing feature.
else
{
throw new TransformerConfigurationException(
XSLMessages.createMessage(
XSLTErrorResources.ER_UNSUPPORTED_FEATURE,
new Object[] {name}));
}
}
看来我需要找到另一种方法来设置这个feaure常量。ACCESS\u EXTERNAL\u DTD:(
在Java8是的。如果我们设置
TransformerFactory factory = TransformerFactory.newInstance();
factory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
然后属性ACCESS_EXTERNAL_DTD
、ACCESS_EXTERNAL_STYLESHEET
设置为"
,就像owasp指南建议的那样。
我们可以通过以下方式进行验证:
Object hasExternalDtd=factory.getAttribute(XMLConstants.ACCESS_EXTERNAL_DTD);
Object hasExternalStyle=factory.getAttribute(XMLConstants.ACCESS_EXTERNAL_STYLESHEET);
设置FEATURE\u SECURE\u PROCESSING
功能后。
如果不为这两个属性设置默认值,则默认值为“全部”。
我们计划使用CXF为Java客户机代码生成Java类。我已经读到CXF是线程安全的,请参阅CXF常见问题解答。 但我找不到的是,对同一soap服务的两个线程中的两个调用是同时执行的,还是一个线程将阻塞另一个线程? 所以我们有多个线程调用相同的皂服务实例,比如 我需要知道是否只有一个肥皂呼叫在同一时间执行,即一个呼叫阻止所有其他呼叫,直到它完成;或者是否所有呼叫都在同一时间通过。
问题内容: 从其他线程(而不是EDT)调用JFrame的dispose()方法是否安全? 问题答案: 否。它可能会起作用,也可能会引起问题。只需将方法包装在SwingUtilities.invokeLater(…)中,不必担心。
我想知道是否有人知道一种很好的方法,可以使用Capybara/Browserstack/Cucumber按顺序启动各个浏览器堆栈测试。 我在使用Capybara时遇到了一些问题,因为browserstack不会在每次运行时都使用我的新功能进行更新,即使我关闭了浏览器,也不会更新,即:两次测试在browserstack中顺序启动,但使用相同的浏览器和操作系统设置。 摘要场景:运行登录测试假设我想测试
这就是我生成dutylist的方法。 这将更改对的第二个值 但是它会更改pos中的其他值,也就是说,如果我更改了StaffListUpdated[0].third[0]=pair,它也会更改StaffListUpdated[1].third[0]=pair。我试过很多种方法,但都无济于事。
问题内容: 这个问题全都与懒惰有关…我想做这样的事情: 这样我就不必这样做: 有什么办法可以使第一个查询工作?这是我运行它时遇到的错误: 问题答案: 您的意思是在MySQL中您的第一个查询: 产生此错误?: 错误代码:1064。您的SQL语法有错误;请参见语法。检查与您的MySQL服务器版本相对应的手册,以在第1行的’*’附近使用正确的语法 您可以将代码更改为(这不会导致任何错误!): 或到此,如
问题内容: 当我选择第一个SelectOnMenu的任何项目时,我想更新第二个SelectOneMenu。现在,我从ManagedBean获取SelectOneMenus的值。我想我必须使用AJAX(jquery)将参数发送到ManagedBean。 问题答案: 实际上,您可以使用ValueChangeListener,当selectOneMenu的值更改时将调用它: 然后,在您的bean中,您可