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
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. –