私のXMLのJAXB名前空間がデフォルトns1に設定されているのはなぜですか?

NetBeansコンテキスト内のGlassFish 3.1.2サーバーでテストフェーズで正しく動作するNetBeans 7.2(Windows 7環境で!)を使用してWebアプリケーションからwarファイルをビルドしました。

package-info.java ファイル内の定義された名前空間は、正しくxmlファイルに追加されます。

しかし、Linuxマシン上の別々のGlassFishサーバーにwarファイルをデプロイすると、名前空間はpackage-info.javaファイルで定義されていないデフォルトのns1に設定されますか?

私は間違って何をしていますか?

よろしく、 ジェラルド

5
nl ru de

1 答え

xmlのJAXB名前空間がデフォルトns1に設定されているのはなぜですか?

ns1 is not the namespace but the prefix. The prefix is not significant. For example the following documents are all equivalent. The foo element is in the FOO namespace, and the bar element is in the BAR namespace.

JAXB (JSR-222) implementation is not required to use the prefix specified in the @XmlSchema annotation.  EclipseLink JAXB (MOXy) does and recent versions of the JAXB RI appear to.  The version/implementation of JAXB in NetBeans 7.2 appears to, while the version/implementation of JAXB that GlassFish 3.1.2 uses does not.

Below is a link to an article that I wrote that goes into a little more detail and covers the NamespacePrefixMapper extension that may be useful here.

5
追加された
あなたの答えをありがとうが、Netbeans内でアプリケーションを実行するときにプレフィックスが正しく追加された理由は分かりません。別のGlassFishサーバーではありません。
追加された 著者 g.verhaag,
両方の環境でプレフィックスを正しく取得する方法はありますか?
追加された 著者 g.verhaag,
申し訳ありませんが、私はもう理解できません。 NetBeans環境のプレフィックスがpackage-info.javaファイルで設定されたプレフィックスと同じで、スタンドアロンのGlassFish実行の場合にns1と等しいのはなぜですか?
追加された 著者 g.verhaag,
Blaise、私にそれを説明するあなたの努力のおかげで、しかし私はそれを理解していない、恐れている、申し訳ありません!
追加された 著者 g.verhaag,
はい、3つの例の間のsimularityは明らかです!しかし、NetBeans内からアプリケーションを実行するときに使用するns1接頭辞を変更したいのですが?たぶん、私は再び基本から始めるだろう!
追加された 著者 g.verhaag,
私はあなたの書類を見ましたが、正直言って助けはあまりありませんでした。多分このことは、この問題に関して私が徹底的な背景を欠いていることを示しているでしょう。 NetBeansでは、GlassFish 3.1.2サーバーも使用しています。
追加された 著者 g.verhaag,
@ user2020967 - おそらく、これらの環境間でJAXB(JSR-222)の実装やバージョンが異なるでしょう。
追加された 著者 Blaise Doughan,
@ user2020967 - 接頭辞は両方の環境で正しくあります。なぜなら、接頭辞はモデルにマッピングされている名前空間の資格と同じであるからです。私の答えの最後のリンクには、使用するプレフィックスを制御するためのテクニックが含まれています。
追加された 著者 Blaise Doughan,
@ user2020967 - JAXB(JSR-222)の実装では、 @XmlSchema アノテーションで指定された接頭辞を使用する必要はありません。接頭辞自体は重要ではありませんが、これは問題ありません。異なる動作を見ているので、各環境で異なるバージョン/実装のJAXBを使用しています。
追加された 著者 Blaise Doughan,
@ user2020967 - あなたがXMLにどれほど親しみがあるかわからないので、XMLパーサーに関しては、私の答えに含まれている3つのXML文書は全く同じ名前空間の修飾を持っていることを理解していますか?
追加された 著者 Blaise Doughan,
@ user2020967 - 次に、JAXB(JSR-222)実装で @XmlSchema アノテーションで指定された接頭辞を使用する必要がないという事実になります。 1つの環境(NetBeans 7.2)では動作し、別の環境(GlassFish 3.1.2)では動作しないという事実は、2つの環境で異なるバージョン/実装のJAXBが使用されていることを示します。ここでは、使用する接頭辞に影響を与えるために書いた記事へのリンクがあります。 blog.bdoughan.com/2011/11/jaxb-and-namespace-prefixes.html
追加された 著者 Blaise Doughan,