1

2013 年 9 月 22 日午後 5:15:00 org.glassfish.jersey.message.internal.SecureSaxParserFactory

WARNING: JAXP feature XMLConstants.FEATURE_SECURE_PROCESSING cannot be set on a SAXParserFactory. External general entity processing is disabled but other potential security related features will not be enabled.
org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized.
    at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.setFeatures(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserImpl.<init>(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.newSAXParserImpl(Unknown Source)
    at org.apache.xerces.jaxp.SAXParserFactoryImpl.setFeature(Unknown Source)
    at org.glassfish.jersey.message.internal.SecureSaxParserFactory.<init>(SecureSaxParserFactory.java:107)...

使うことができます config.getFeatures().put(FeaturesAndProperties.FEATURE_DISABLE_XML_SECURITY, true);

Jersey1.xでこの警告メッセージを回避するためですが、 Jersey2.xに移行したとき、この機能設定はありません。Jersey2.xで再びそれを回避するにはどうすればよいですか? ありがとう!

4

3 に答える 3

3

Java 1.5 にバンドルされ、以前のバージョンでオプションとして使用できる JAXP 1.3 では、SAX 機能 http://javax.xml.XMLConstants/feature/secure-processing (XMLConstants. FEATURE_SECURE_PROCESSING)。この機能を設定すると、要素内の属性が多すぎるか、要素名の文字が多すぎるなど、過度に長い構造は整形式エラーとして扱われます。これは、本当に整形式のドキュメントを拒否することになる可能性があることを意味します。ただし、デフォルト値は非常に大きく、ほとんどの現実的なドキュメントを処理できます。

Jersey2.x では、この機能を無効にするかどうかを確認するには、org.glassfish.jersey.message.internal.AbstractXmlFactory boolean isXmlSecurityDisabled() { return PropertiesHelper.isProperty(config.getProperty(MessageProperties.XML_SECURITY_DISABLE)); Jersey が MessageProperties.XML_SECURITY_DISABLE パラメータを使用してこの設定を確認していることがわかります。

したがって、個別に設定できます。 サーバー:

@ApplicationPath("/*")
public class XXXResourceConfig extends ResourceConfig {
    public XXXResourceConfig() {
        packages("xxx.yyy.zzz");
        property(MessageProperties.XML_SECURITY_DISABLE, Boolean.TRUE);
    }
}

クライアント:

ClientConfig config = new ClientConfig();
...
config.property(MessageProperties.XML_SECURITY_DISABLE, Boolean.TRUE);
于 2013-09-25T04:42:35.467 に答える
0

この場合、上記の答えは本当に良いと確信しています。しかし、完全を期すために、これを調査したときにわかったことを追加します。この投稿によると、古いバージョンのxercesが問題を引き起こす可能性があります。他の依存関係によって暗黙的に追加される可能性があり、その場合は除外する必要があります。

于 2016-05-23T11:02:02.537 に答える