2017-07-14 6 views
0

Hallo Ich entwickle eine Rest API mit IntelliJ folgende the official doc.Wie kann ich mit Wildfly auf meine REST-Ressource zugreifen?

Aber ich bekomme eine 404 nicht gefunden Fehler beim Zugriff auf die Ressource ... Ich kann weiterhin auf die index.jsp Seite zugreifen. Ich habe jeden Schritt von De Doc verfolgt, aber ich benutze Wildfly anstelle von Glassfish. Hier

ist die Ressource:

@Path("devices") 
public class DevicesResource { 

    @GET 
    @Produces(MediaType.TEXT_PLAIN) 
    public String getAllDevices() { 
     return "Hello world from thingsplay."; 
    } 

} 

Hier ist die Anwendung Kind Klasse:

@ApplicationPath("/api/v2.0") 
public class ApplicationConfig extends Application { 

    @Override 
    public Set<Class<?>> getClasses() { 
     Set<Class<?>> resources = new HashSet<>(); 
     addResourceClasses(resources); 
     return resources; 
    } 

    public void addResourceClasses(Set<Class<?>> resources) { 
     resources.add(be.thingsplay.resources.DevicesResource.class); 
    } 

} 

Also, wenn ich http://localhost:8080/api/v2.0 greife ich auf die Index-Seite zu bekommen, aber wenn ich versuche, http://localhost:8080/api/v2.0/devices zuzugreifen ich ein 404 Nicht gefunden Fehler.

Als ich mir das Artefakt ansah, bemerkte ich, dass die Jersey-Bibliothek nicht im Krieg enthalten war. Aber wenn ich versuche, es dem Krieg hinzuzufügen, erhalte ich Ausnahmen, wenn ich versuche, die Anwendung zu implementieren.

enter image description here

Die Ausnahmen erhalte ich:

14:57:23,799 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0027: Starting deployment of "apirest_war_exploded.war" (runtime-name: "apirest_war_exploded.war") 
14:57:24,147 WARN [org.jboss.weld.deployer] (MSC service thread 1-2) WFLYWELD0013: Deployment deployment "apirest_war_exploded.war" contains CDI annotations but no bean archive was not found. (No beans.xml nor class with bean defining annotations) 
14:57:24,178 ERROR [org.jboss.msc.service.fail] (ServerService Thread Pool -- 89) MSC000001: Failed to start service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded: org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:85) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
    at org.jboss.threads.JBossThread.run(JBossThread.java:320) 
Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    at org.glassfish.jersey.internal.ServiceFinder.<clinit>(ServiceFinder.java:165) 
    at org.glassfish.jersey.servlet.internal.ServletContainerProviderFactory.getAllServletContainerProviders(ServletContainerProviderFactory.java:66) 
    at org.glassfish.jersey.servlet.init.JerseyServletContainerInitializer.onStartup(JerseyServletContainerInitializer.java:132) 
    at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:186) 
    at io.undertow.servlet.core.DeploymentManagerImpl$1.call(DeploymentManagerImpl.java:171) 
    at io.undertow.servlet.core.ServletRequestContextThreadSetupAction$1.call(ServletRequestContextThreadSetupAction.java:42) 
    at io.undertow.servlet.core.ContextClassLoaderSetupAction$1.call(ContextClassLoaderSetupAction.java:43) 
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
    at io.undertow.servlet.api.LegacyThreadSetupActionWrapper$1.call(LegacyThreadSetupActionWrapper.java:44) 
    at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:234) 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:100) 
    at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:82) 
    ... 6 more 
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function from [Module "deployment.apirest_war_exploded.war:main" from Service Module Loader] 
    at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:198) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:363) 
    at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:351) 
    at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:93) 
    ... 21 more 

14:57:24,182 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 20) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "apirest_war_exploded.war")]) - failure description: { 
    "WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./apirest_war_exploded" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function from [Module \"deployment.apirest_war_exploded.war:main\" from Service Module Loader]"}, 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./apirest_war_exploded"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => undefined 
} 
14:57:24,183 ERROR [org.jboss.as.server] (management-handler-thread - 20) WFLYSRV0021: Deploy of deployment "apirest_war_exploded.war" was rolled back with the following failure message: 
{ 
    "WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./apirest_war_exploded" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function from [Module \"deployment.apirest_war_exploded.war:main\" from Service Module Loader]"}, 
    "WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./apirest_war_exploded"], 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => undefined 
} 
14:57:24,207 INFO [org.jboss.as.server.deployment] (MSC service thread 1-3) WFLYSRV0028: Stopped deployment apirest_war_exploded.war (runtime-name: apirest_war_exploded.war) in 23ms 
14:57:24,208 INFO [org.jboss.as.controller] (management-handler-thread - 20) WFLYCTL0183: Service status report 
WFLYCTL0184: New missing/unsatisfied dependencies: 
     service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded (missing) dependents: [service jboss.deployment.unit."apirest_war_exploded.war".deploymentCompleteService] 
WFLYCTL0186: Services which failed to start:  service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded 

[2017-07-14 02:57:24,302] Artifact apirest:war exploded: Error during artifact deployment. See server log for details. 
[2017-07-14 02:57:24,302] Artifact apirest:war exploded: java.lang.Exception: {"WFLYCTL0080: Failed services" => {"jboss.undertow.deployment.default-server.default-host./apirest_war_exploded" => "org.jboss.msc.service.StartException in service jboss.undertow.deployment.default-server.default-host./apirest_war_exploded: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.NoClassDefFoundError: com/google/common/base/Function 
    Caused by: java.lang.ClassNotFoundException: com.google.common.base.Function from [Module \"deployment.apirest_war_exploded.war:main\" from Service Module Loader]"},"WFLYCTL0412: Required services that are not installed:" => ["jboss.undertow.deployment.default-server.default-host./apirest_war_exploded"],"WFLYCTL0180: Services with missing/unavailable dependencies" => undefined} 
+0

versuchen, '/' im Pfad '@Path ("/devices ") zu verwenden' – tima

+0

Die derzeit veröffentlichte Ausnahme StackTrace ist ein Red Hering, da es durch falsch Bündeln von Bibliotheken verursacht wird, die Sie nicht bündeln müssen. Bitte kehren Sie dies um und veröffentlichen Sie stattdessen die Protokollierung der Bereitstellung, bei der Sie nicht auf die Ressource zugreifen können. – Gimby

+0

@tima Ich habe es schon versucht, es ändert nichts. – Phoste

Antwort

0

Zu allererst Sie keine REST Implementierung Gläser (wie Jersey) hinzufügen müssen, um Ihre Anwendung, da Java EE 7 Server wie WildFly und GlassFish kommen damit kostenlos.

Das Problem besteht darin, dass in Ihren URLs der Kontextpfad Ihrer Anwendung fehlt (rest_glassfish_hello_world_war_exploded in dem von Ihnen referenzierten Lernprogramm).

dh.

http://localhost:8080/rest_glassfish_hello_world_war_exploded /api/v2.0/devices

wo rest_glassfish_hello_world_war_exploded sollten mit Ihrem tatsächlichen Anwendungsnamen ersetzt werden, wenn es anders ist: die richtige Service-URL sollte etwas ähnliches sein.

+0

Nun, ich habe Zugriff auf die index.jsp mit http: // localhost: 8080/api/v2.0. – Phoste

+0

Haben Sie Ihre App explizit so konfiguriert, dass sie über den Stammkontext "/" zugänglich ist? –

Verwandte Themen