2

Glassfish 4 用の JaxRS アプリケーションを作成しました。Jackson 2 を使用しています。問題なくビルドできますが、デプロイすると、次の 4 つのエラーのうちの 1 つ以上が発生します。

Exception while loading the app : CDI deployment failure:WELD-001408 Unsatisfied dependencies for type [IterableProvider<InjectionResolver<Object>>]

および/または

org.glassfish.deployment.common.DeploymentException: CDI deployment failure:WELD-001414 Bean name is ambiguous. Name JerseyClassAnalyzer resolves to beans [Managed Bean ...

および/または

org.jboss.weld.exceptions.DeploymentException: WELD-001409 Ambiguous dependencies for type [MultivaluedParameterExtractorProvider] ...

および/または

org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [Ref<ContainerRequest>]

私が知っているように、グラスフィッシュがクラスを2回ロードしようとすると、最後の例外がスローされる可能性がありますか?

直接および間接の依存関係のスクリーンショットをアップロードしました。 http://i.stack.imgur.com/HEtb1.png

他のソリューションに関して<scope>provided</scope>、これらのクラスを含むパッケージに追加しようとしました。--> 成功しない

何か考えはありますか?

編集1:

私のリソース構成:

@javax.ws.rs.ApplicationPath("resources")
public class ApplicationConfig extends ResourceConfig {

    public ApplicationConfig() {
        register( JacksonFeature.class );
    }

    private void addMyResources() {
        //a lot of resources.
    }
}

Jackson 2 を有効にするには:

public class JacksonFeature implements Feature {

    public boolean configure( final FeatureContext context ) {

        String postfix = '.' + context.getConfiguration().getRuntimeType().name().toLowerCase();

        context.property( CommonProperties.MOXY_JSON_FEATURE_DISABLE + postfix, true );

        context.register( JsonParseExceptionMapper.class );
        context.register( JsonMappingExceptionMapper.class );
        context.register( JacksonJsonProvider.class, MessageBodyReader.class, MessageBodyWriter.class );

        return true;
    }
}

そのような多くのエンティティ:

@Entity
@JsonIdentityInfo(generator = ObjectIdGenerators.None.class, property = "id", scope=Address.class)
//the JsonIdentityInfo is the reason i need Jackson 2
public class Address implements Serializable {
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;
    private String postalCode;
    private String city;
    private String country;
    private String street;
    private String houseNumber;
    @Embedded
    private Coordinate coordinate;
    //getters, setters , etc.
}

それから私はそのような多くのDAOを持っています:

@Stateless
public class AddressDao extends GenericDao {
    public Address getAddress(long id){
        return em.find(Address.class, id);
    }

    public List<Address> getAddresses(){
        List<Address> address = em.createQuery("SELECT a FROM Address a", Address.class).getResultList();
        return address;
    }
}

そして、そのような多くのリソース:

@Path("dummy")
@Stateless
public class DummyResource {

    @Context
    private UriInfo context;
    @Inject userAuth user;
    @Inject addressDao AddressDao;

    public DummyResource() {
    }

    @GET
    @Produces("application/json")
    public List<Address> getAddress() {
        return AddressDao.getAddresses();
    }

}

編集2:

新しいテスト プロジェクトを作成しました。依存関係を org.glassfish.jersey.server に追加するとすぐに、エラーが発生します。

編集3:

私はエラーでテストアプリケーションを作成しました:

http://www.file-upload.net/download-8459084/testApplication_20131229.rar.html

4

1 に答える 1