問題タブ [spring-oxm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Spring MVC と JIBX を使用したさまざまなクラスのマーシャリング
Spring MVC でいくつかの RESTful サービスを構築しようとしています。XML、HTML、および JSON など、いくつかの表現を提供します。OXM テクノロジーとして JiBX を使用したいと考えています。
現在、JiBX で Spring を接続する方法を理解するのに苦労しています。たとえば、単一のクラスを結び付けたい場合は、単にXMLCustomer
を定義し、それを .xml に追加するだけです。これはうまくいきます。JibxMarshaller
MarshallingView
ContentNegotiatingViewResolver
問題は、複数のクラスのマーシャリングを接続する方法がわからないことです。たとえばCustomer
とUser
. それぞれJibxMarshaller
が 1 つのクラスしかサポートできません (多数をサポートできる Jaxb2Marshaller とは異なります)。クラスごとにマーシャラーを宣言しようとしましたが、MarshallingView
1 つのマーシャラーしかサポートしていません。複数の s を宣言MarshallingView
しても機能しません (最初の 1 つだけが機能するようです)。
あなたのアドバイスをいただければ幸いです。ありがとう。
以下のRiteshの回答に基づいて更新します。
targetClass
の所有物に私が振り落とされたことが判明しましたJibxMarshaller
。マーシャラーが単一のクラスに対してのみ機能することを意味すると思いましたが、関連するすべてのバインディングを見つける方法としてターゲット クラスを使用しているようです。したがって、解決策は、バインドしている一連のクラスから任意のターゲット クラスを使用して、1 つのマーシャラーのみを使用することです。例えば:
java - SpringOXMはStruts1では機能しません
StrutsとSpringIOCの統合を使用Spring OXM
しますが、使用しません。Struts 1
これは、アプリケーションが古いものであり、XMLバインディングを含むモジュールを追加しているだけであり、アプリケーションのアーキテクチャを変更するつもりがないためです。
ClasspathXmlApplicationContext
OXMのBeanインジェクションを求めるアクションクラスがあります。
これが私のSpringContextXMLです。
アクションクラス:
サービスクラス:
Webアプリケーションは、エラーメッセージやスタックトレースHTTP 500
なしで表示します。ただし、の構成場所をClasspathXmlApplicationContext
無効な場所に変更すると、Springは例外をスローします。
問題はSpringインジェクションにあるようです。
エラーがあるとイライラしますが、エラーメッセージはありません。それはあなたを何日も立ち往生させます。
ありがとう
意思
java - 1つのxmlで複数のpojoをマーシャリングする方法は?
o / xマッパーを使用して(同じタイプの)すべてのpojoを単一のxmlにマーシャリングすることは可能ですか?次のxmlファイルを生成したいように
ここで、record1とrecord 2は同じタイプのオブジェクトです。つまり、同じxmlファイルのrecord2オブジェクトよりも、xmlファイルの最初のrecord1オブジェクトを書き込みます。
java - 「サポートされていない javax.xml.parser.transform.Result パラメータ」による JAXB マーシャリングの失敗
私はSpring 3.1.1をOXMのものと一緒に使用しており、RestTemplateを使用してリクエストを別のサーバーに投稿しています。これのリクエスト側とレスポンス側の両方として ClassTermCollection というクラスを使用しています。これには @XmlRootElement などの注釈が付けられており、今日まで問題なく動作しています。しかし、JAXB がリクエストを作成しようとすると、突然次のエラーが発生します (つまり、このエラーは、サーバーへの http 呼び出しが行われる前に、クライアント側でスローされます)。
Google は、この特定のエラーについてほとんど役に立たないことを明らかにしており、さらに悪いことに、Sun は、JDK を使用して、例外がスローされているクラスにソースを出荷していないようです...そのため、完全にデバッグすることさえできません。何が起こっているのかを正確に特定するために、これの根元まで。
編集:(スタックトレースの下の追加コメントを参照)
[エラー] org.springframework.http.converter.HttpMessageNotWritableException: [pmt.model.collections.ClassTermCollection@6576fac] を書き込めませんでした。ネストされた例外は org.springframework.oxm.MarshallingFailureException: JAXB marshalling exception; です。ネストされた例外は javax.xml.bind.MarshalException: unsupported javax.xml.parser.transform.Result パラメータ [ERROR] at org.springframework.http.converter.xml.MarshallingHttpMessageConverter.writeToResult(MarshallingHttpMessageConverter.java:134) [ERROR] at org.springframework.http.converter.xml.MarshallingHttpMessageConverter.writeToResult(MarshallingHttpMessageConverter.java:134) org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter.writeInternal(AbstractXmlHttpMessageConverter.java:66) [エラー] org.springframework.http.converter.AbstractHttpMessageConverter.write(AbstractHttpMessageConverter.java:179) [エラー] at org.springframework. web.client. HttpConnection.handleRequest(HttpConnection.java:505) [エラー] org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:843) で [エラー] org.mortbay.jetty.HttpParser.parseNext(HttpParser.java: 647) [エラー] org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:205) で [エラー] org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) で [エラー] org.mortbay で。 io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) [エラー] org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:488) で [エラー] 原因: org.springframework.oxm.MarshallingFailureException: JAXB マーシャリング例外。ネストされた例外は javax.xml.bind.MarshalException: unsupported javax.xml.parser.transform.Result parameter [ERROR] at org.springframework.oxm.jaxb です。
わかりました。com.sun.xml.internal.bind.v2.runtime.MarshallerImplのソース1をオンラインで見つけました。今、何が起こっているのか (ちょっと) わかります。そのコードは Result インスタンスを見て、それが StreamResult の場合 (私の場合のように)、StreamResult の outputstream、writer、次に systemId フィールドを逆参照しようとし、それらの値を使用して Writer を構築します。それらのすべてが null の場合、メソッドの下部に落ちて、ここで発生している「サポートされていない形式」の例外がスローされます。
その上で、Spring org.springframework.http.converter.xml.AbstractXmlHttpMessageConverter クラスで、StreamResult を構築するこの行に到達し、outputMessage.getBody() の結果を StreamResult コンストラクターに渡します。ここで null になっているため、下から問題が発生しています。
@Override protected final void writeInternal(T t, HttpOutputMessage outputMessage) throws IOException { writeToResult(t, outputMessage.getHeaders(), new StreamResult(outputMessage.getBody())); }
解決済み
これでうまくいきました...結果の詳細はすべて忘れてしまいました。しかし、それは基本的に、同僚が HttpClient クラスの 1 つをサブクラス化するコードを追加し、彼のクラスがインターフェイスの契約を正確に満たしていないというクレイジーな状況であり、私のコードによって呼び出されたときにこのエラーが発生しました。これは、JAXB エラーのように見える奇妙な状況の 1 つでしたが、JAXB とはまったく関係がないことが判明しました。
spring-ws - Spring OXM 3 + JiBXException:クラスにマーシャラーが定義されていません
アプリケーションでSpringOXMとJiBXを使用しました。
以下は私のSpringConfigファイルです
以下はコントローラークラスです
XMLリクエストを送信すると、正常にマーシャリングされましたが、応答に対して次のエラーメッセージが表示されました。
ResponseClass
私はすでに春の設定ファイルでマーシャラーを定義しました。
助けてください。ありがとう。
xsd - JAXB と Spring OXM の問題
次のような基本的な XML ドキュメントを非整列化しようとしています。
対応する XSD は次のとおりです。
UnmarshallingFailureException を体系的に取得します。
ご参考までに、私はSpring OXMを使用しています。
これは私の XSD スキーマとおそらく名前空間に関係しているのではないかと強く疑っています...
誰でも助けてもらえますか?
編集: 関連する Spring 構成は次のとおりです。
編集 2: スキーマ検証をコメントアウトした場合の例外トレース:
spring - Spring Oxm を使用したキャスター プロパティの設定
Spring Oxmでは、さまざまなマーシャラー/アンマーシャラーを使用できます。Castorはその 1 つです。
デフォルトでは、castor は xml ドキュメントをインデントなしでマーシャリングし、公式ドキュメントは、その行を含む検索場所に castor.properties ファイルを配置org.exolab.castor.indent=true
すると、デフォルトの動作がオーバーライドされることを示しています。
さて、Web アプリケーション (Spring Batch Admin) で Spring Oxm を使用する場合、castor jar の castor.properties をオーバーライドするにはどうすればよいですか?
次の Bean 構成 (余分な行は削除されています) があり、私が見る限り、これに設定するために必要なプロパティがありません。
java - Maven プロジェクトでの JAXB 生成クラスの管理
「jaxb2-maven-plugin」Mavenプラグインによって自動的に生成されたいくつかのJAXBクラスを追加しようとしているMavenベースのプロジェクトがあります。ただし、私の最初のカットでは循環依存ループに陥っています。
- これらの JAXB クラスはまだ生成されていないため、それらを参照する他のソースにはコンパイル エラーがあります。
- これらの他のソースにはコンパイル エラーがあるため、これらの JAXB クラスは生成されません。
これを解決するには、2 つの明らかな可能性があるようです。
- プロジェクトがビルドされ、JAXB クラスが自動的に生成されるように、壊れた参照をコメントアウトします。
/target
次に、これらの生成されたソースを からにコピーして/src/main/java
、それらへの参照によってコンパイル エラーが発生しないようにします。 - JAXB だけで構成された、完全に別のプロジェクトを作成します。メイン プロジェクトに依存関係として含めます。
ここで何か不足していますか?オプション #1 はまったくばかげているように思えます...これは、人々が JAXB を使用する方法ではあり得ません。オプション #2 はより合理的に見えますが、それでもかなり非効率的で扱いにくいものです。JAXB を使用するためだけに、まったく別のプロジェクトのオーバーヘッドを引き受ける必要があるのですか?
Maven プラグインが生成する同じプロジェクトで、開発者が JAXB 生成クラスを参照するために使用する、より洗練された方法はありますか?
更新: リクエストに応じて、POM の関連部分を以下に示します。
を実行するmvn clean package
と、JAXB ソースが/target
サブディレクトリの下に生成されていることがわかります。ただし、これらの生成されたソースは、コンパイル フェーズのクラスパスに自動的に追加されません。
解決後の更新: 私のコンパイルの問題は、私が Eclipse で実行していたという事実と関係があり、その Maven 統合には「jaxb2-maven-plugin」にいくつかの問題があることが判明しました。その問題とその解決策の詳細については、この StackOverflow の質問を参照してください。
java - EclipseLinkMOXyでアンマーシャリングするときにDTDを無視する
EclipseLink MOXyを使用して一部のXMLをPOJOにアンマーシャリングしようとするとFileNotFoundException
、相対パスとしてドキュメントのDTDを検索する場所が表示されます。
この例のように「外部化されたメタデータ」を提供しているので、なぜDTDが必要なのかわかりません。DTDを無視するか、解決しようとしないようにすることができれば、それは素晴らしいことです。
spring - xml リクエストを使用した Spring 3.1 Restful サービスの UnmarshalException
私はSpring Web 3.1.1とSpring Oxm 3.1.1を使用しています。
jaxb2marshaller が xml ソースをオブジェクトへ非整列化しようとすると、例外が発生しました。
このように、sevlet設定でjaxb2 marshallを構成しました。
コントローラーで、このようにアンマーシャリングを試みます。
および My Authentication Object 。
}
この記事を参照しました.. http://www.ibm.com/developerworks/webservices/library/wa-spring3webserv/index.html
私のソースは記事のサンプル コードとまったく同じだと思います。
しかし、うまくいきません。
私はあなたの助けに感謝します。