2017-12-09 3 views
1

Ich verwende eclipse-microprofiles-config v1.1 in meinem Trikot 2.26.eclipse-microprofiles config throws Keine ConfigProviderResolver-Implementierung gefunden

Meine komplette build.gradle ist wie folgt.

apply plugin: 'java' 
apply plugin: 'war' 

repositories { 
    mavenCentral() 
} 

war{ 
    archiveName = 'pqr.war' 
} 

dependencies { 
    compile 'javax:javaee-api:7.0' 
    compile 'javax.ws.rs:javax.ws.rs-api:2.0' 
    compile 'org.glassfish.jersey.core:jersey-common:2.26' 
    compile 'org.glassfish.jersey.core:jersey-client:2.26-b03' 
    compile 'org.glassfish.jersey.core:jersey-server:2.26' 
    compile 'org.glassfish.jersey.containers:jersey-container-servlet-core:2.26' 
    compile 'org.glassfish.jersey.containers:jersey-container-servlet:2.26' 
    compile 'org.glassfish.jersey.media:jersey-media-moxy:2.26' 
    compile 'org.glassfish.jersey.inject:jersey-hk2:2.26' 
    compile 'org.eclipse.microprofile.config:microprofile-config-api:1.1' 
} 

Ich habe die erforderlichen Eigenschaften Datei auf {PROJECT_ROOT}/src/main/webapp/META-INF/microprofile-config.properties befindet in Rechenblatt Inhalt

// Higher ordinal value so that this configuration source will take precedense 
config_ordinal = 599999999 
foo.bar = abcdefghijklmnopqrstuvwxyz 

Jedes Mal, wenn ich versuche, diese Konfiguration zu erhalten, wie

import javax.ws.rs.GET; 
import javax.ws.rs.Path; 

import org.eclipse.microprofile.config.Config; 
import org.eclipse.microprofile.config.ConfigProvider; 

@Path(value = "awesomeService") 
public class AwesomeService { 

    @GET 
    @Path(value = "test") 
    public String someOperation() { 

     Config config = ConfigProvider.getConfig(); // fails here 
     String value = config.getValue("foo.bar", String.class); 

     return value; 
    } 

} 

es wirft „No ConfigProviderResolver Implementierung gefunden "Obwohl sich ConfigProviderResolver.class im Klassenpfad befindet. Ich verwende Glassfish 4 für meinen Einsatz. Wo habe ich es falsch verstanden. Im Folgenden ist das Serverprotokoll von Glassfish.

[2017-12-09T20:34:17.296+0530] [glassfish 4.1] [WARNING] [] [javax.enterprise.web] [tid: _ThreadID=27 _ThreadName=http-listener-1(1)] [timeMillis: 1512831857296] [levelV$ 
lue: 900] [[ 
    StandardWrapperValve[org.pqr.rest.AppConfig]: Servlet.service() for servlet org.pqr.rest.AppConfig threw exception 
java.lang.IllegalStateException: No ConfigProviderResolver implementation found! 
     at org.eclipse.microprofile.config.spi.ConfigProviderResolver.instance(ConfigProviderResolver.java:122) 
     at org.eclipse.microprofile.config.ConfigProvider.<clinit>(ConfigProvider.java:74) 
     at org.pqr.rest.AwesomeService.someOperation(AwesomeService.java:16) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
     at java.lang.reflect.Method.invoke(Method.java:498) 
     at org.glassfish.jersey.server.model.internal.ResourceMethodInvocationHandlerFactory$1.invoke(ResourceMethodInvocationHandlerFactory.java:81) 
     at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher$1.run(AbstractJavaResourceMethodDispatcher.java:144) 
     at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.invoke(AbstractJavaResourceMethodDispatcher.java:161) 
     at org.glassfish.jersey.server.model.internal.JavaResourceMethodDispatcherProvider$TypeOutInvoker.doDispatch(JavaResourceMethodDispatcherProvider.java:205) 
     at org.glassfish.jersey.server.model.internal.AbstractJavaResourceMethodDispatcher.dispatch(AbstractJavaResourceMethodDispatcher.java:99) 
     at org.glassfish.jersey.server.model.ResourceMethodInvoker.invoke(ResourceMethodInvoker.java:389) 
     at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:347) 
     at org.glassfish.jersey.server.model.ResourceMethodInvoker.apply(ResourceMethodInvoker.java:102) 

Ein Beispielprojekt, das dieses Problem verursacht, kann hier heruntergeladen werden. https://github.com/kalpacg/eclipse-microprofile-config

Antwort

2

Der Fehler ist korrekt. MicroProfile Config ist eine API, eine Spezifikation. Es ist keine Implementierung. Um eine Implementierung zu haben, könnten Sie etwas wie Geronimo Config als eigenständige Bibliothek verwenden.

Beachten Sie auch, dass Sie möglicherweise die Eigenschaftendatei in Ihrem Build unter src/main/resources/META-INF platzieren müssen, falls die Eigenschaft nicht geladen werden kann.

+0

Sie sind in der Tat richtig. Ich ging davon aus, dass die Core-Konfigurations-API von leaset ConfigProviders für Standardkonfigurationsoptionen wie die microprofile-config.properties-Datei enthält. Danke für deine Einsicht. –

Verwandte Themen