3

JBoss EAP 6.1.0.Beta1 アプリケーション サーバーにデプロイされた JAX-WS Web サービスの JAXB プロバイダーとして EclipseLink MOXy を使用しようとしています。今のところ、ここjavax.xml.ws.Providerで説明されているように実装し、Web サービスで使用される実装とドメイン クラスを含むパッケージにファイルを配置しました。このファイルの内容は次のとおりです。jaxb.propertiesProvider

javax.xml.bind.context.factory=org.eclipse.persistence.jaxb.JAXBContextFactory

サービスを含む Web アプリケーションをデプロイしようとすると、次のエラーがログに記録されます。

@XmlValue is not allowed on a class that derives another class

私の場合、MOXy を JAXB プロバイダーとして使用する主な理由は@XmlValue、サブクラスでアノテーションを使用できるようにするためです。このエラーは、MOXy を使用するテスト アプリケーションで Web サービスに使用されるのと同じクラスでアンマーシャリングしようとすると発生しません。さらに、org.eclipse.persistenceスタックトレースにはパッケージとそのサブパッケージのクラスはなく、com.sun.xml.bind.v2代わりにクラスのみがあります。どうやら、Web アプリケーションのデプロイ時に MOXy は使用されません。必要な Maven アーティファクトorg.eclipse.persistenceはすべて WAR ファイルにあります。

$ jar tf my-app.war | grep org.eclipse.persistence
WEB-INF/lib/org.eclipse.persistence.antlr-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.asm-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.moxy-2.5.0.jar
WEB-INF/lib/org.eclipse.persistence.core-2.5.0.jar 

私は何を間違っていますか?私が理解している限り、ProviderWeb サービスが呼び出されたときに実行時に呼び出されます。しかし、デプロイ時にエラーが発生します。に加えて何かを再実装する必要がありProviderますか?

4

2 に答える 2

1

最初のステップは、EclipseLink ライブラリが正しい場所にあることを確認することです。MOXy を JAXB プロバイダーとして構成する代わりに、MOXy API を直接使用してみることができますか?

import org.eclipse.persistence.jaxb.JAXBContext;
import org.eclipse.persistence.jaxb.JAXBContextFactory;

public class Demo {

    public static void main(String[] args) {
        JAXBContext jc = JAXBContextFactory.createContext(new Class[] {Foo.class, Bar.class}), null);
    }

}
于 2013-06-27T18:44:52.793 に答える