5

バグを追跡しようとしています。ログに上記のエラーが記録されます。

このメッセージの意味を説明できる人はいますか? このメッセージを受け取る典型的な理由はありますか?

スタックトレースは次のとおりです。

org.apache.axiom.om.OMException: java.lang.IllegalArgumentException: local part cannot be "null" when creating a QName
            at org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:206)
            at org.apache.axiom.om.impl.llom.OMNodeImpl.build(OMNodeImpl.java:318)
            at org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:618)
            at org.apache.axis2.jaxws.message.util.impl.SAAJConverterImpl.toOM(SAAJConverterImpl.java:147)
            at org.apache.axis2.jaxws.message.impl.XMLPartImpl._convertSE2OM(XMLPartImpl.java:77)
            at org.apache.axis2.jaxws.message.impl.XMLPartBase.getContentAsOMElement(XMLPartBase.java:203)
            at org.apache.axis2.jaxws.message.impl.XMLPartBase.getAsOMElement(XMLPartBase.java:255)
            at org.apache.axis2.jaxws.message.impl.MessageImpl.getAsOMElement(MessageImpl.java:464)
            at org.apache.axis2.jaxws.message.util.MessageUtils.putMessageOnMessageContext(MessageUtils.java:202)
            at org.apache.axis2.jaxws.core.controller.AxisInvocationController.prepareRequest(AxisInvocationController.java:370)
            at org.apache.axis2.jaxws.core.controller.InvocationController.invoke(InvocationController.java:120)
            at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invokeSEIMethod(JAXWSProxyHandler.java:317)
            at org.apache.axis2.jaxws.client.proxy.JAXWSProxyHandler.invoke(JAXWSProxyHandler.java:148)
4

3 に答える 3

8

String から org.w3c.dom.Document を作成しようとしているときに、同じエラー メッセージ (QName の作成時にローカル部分を「null」にすることはできません) が表示されました。DocumentBuilderFactory で setNamespaceAware(true) を呼び出すと、問題はなくなりました。作業コードのスニペットを以下に示します。

private static Document getDocumentFromString(final String xmlContent)
  throws Exception
{
    DocumentBuilderFactory documentBuilderFactory =
                                DocumentBuilderFactory.newInstance();
    documentBuilderFactory.setNamespaceAware(true);
    try
    {
        return documentBuilderFactory
                    .newDocumentBuilder()
                    .parse(new InputSource(new StringReader(xmlContent)));
    }
    catch (Exception e)
    {
        throw new RuntimeException(e);
    }
}   
于 2015-05-27T06:07:11.190 に答える
1

createElementNSこれは、このような名前空間メソッドの1つを使用してDOM要素または属性を作成していることを意味します。

document.createElementNS(namespace, null)

またはcreateElementNSまたはsetAttrbuteNS および2番目の引数であるqnameはnull、またはプレフィックスを含みますが、のようにローカル部分は含まれません"foo:"

編集:

バリデーターを介して解析しているXMLを実行しようとします。有効なXML識別子のようなタグまたは属性名がある可能性がありますfoo:foo:bar:baz、XML名前空間によって導入された追加の制限に従って無効です。

于 2012-04-25T09:06:58.460 に答える
0

これは古いスレッドですが、この回答がこのエラーを検索する他の人に役立つことを願っています. maven-enunciate-cxf-plugin:1.28 を使用して Web アプリをビルドしようとしたときに、同じエラーに直面しました。

私にとって、これは Web サービス署名にチェック例外を追加した後に発生しました。

    @WebMethod(operationName = "enquirySth")
    public IBANResponse enquirySth(String input) throws     I 
   InvalidInputException { ...

例外のスローにJAX-WS Specを使用しましたが、成功しませんでした。最後に、この問題が現在のバージョンで解決されていることを示す Enunciate イシュー トラッカー システムでこの問題を見つけましたが、まだ存在していると思います。

最後に、問題を解決するために次の回避策を実行しました: @XmlRootElement を FaultBean に追加します。

@XmlRootElement
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "FaultBean",propOrder = {"errorDescription", "errorCode"})
public class FaultBean implements Serializable {
@XmlElement(required = true, nillable = true)
protected String errorDescription;
@XmlElement(required = true, nillable = true)
protected String errorCode;

public FaultBean() {
}

public String getErrorDescription() {
    return this.errorDescription;
}

public void setErrorDescription(String var1) {
    this.errorDescription = var1;
}

public String getErrorCode() {
    return this.errorCode;
}

public void setErrorCode(String var1) {
    this.errorCode = var1;
}
}

それでおしまい。それが役に立てば幸い。

于 2015-02-04T07:57:10.320 に答える