URL-Mapping mit Stateless Beans

Diskutiere URL-Mapping mit Stateless Beans im Web Tier Forum; Hi, ich habe gerade das Problem, dass ich nicht herausfinde, wie ich meien Stateless Beans ordentlich auf URLs mappe. Wenn ich eine simple...

  1. Goldfish
    Goldfish Mitglied
    Hi, ich habe gerade das Problem, dass ich nicht herausfinde, wie ich meien Stateless Beans ordentlich auf URLs mappe. Wenn ich eine simple Anwendung mit nur einer Stateless-Bean deploye, läuft alles wunderbar. Jetzt hab ich aber das Problem, dass ich bspw. eine Anwendung mit JSF habe und das Mapping in der web.xml wie folgt angegeben habe:

    Code (Text):

    <servlet>
            <servlet-name>Faces Servlet</servlet-name>
            <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>Faces Servlet</servlet-name>
            <url-pattern>*.xhtml</url-pattern>
        </servlet-mapping>
        <welcome-file-list>
            <welcome-file>index.xhtml</welcome-file>
        </welcome-file-list>

        <context-param>
            <param-name>javax.faces.PROJECT_STAGE</param-name>
            <param-value>Development</param-value>
        </context-param>
     
    Anschließend ist das Ergebnis, dass die URLs mit den Stateless Beans nicht mehr mappen und ich diese nicht mehr erreichen kann. Ich habe keine explizite Anweisung in der web.xml, da ich nicht rausfinde, wie diese aussehen müssten. Die Bean sieht gerade so aus:

    Code (Text):

    @Stateless
    @Path(value = "test")
    public class TestRessource {

        @GET
        @Path("call")
        @Produces({MediaType.APPLICATION_JSON, "text/plain"})
        public Object ladeSchhluessel () throws Exception {
            return "das ist ein test";
        }
    }
     
    Das gleiche Problem habe ich, wenn ich statt des JSF-Mappings noch einen Web-Service basierend auf JAX-WS einbinde. Die Stateless-Beans erreiche ich einfach nicht mehr. Wie muss ich die web.xml richtig konfigurieren? Oder wo gibt es eine vernünftige Anleitung bzw. Erklärung zu diesem Thema?
     
    Zuletzt bearbeitet: 6. Juli 2015
  2. Vielleicht hilft dir dieser Kurs hier weiter --> (hier klicken)
  3. stg
    stg Bekanntes Mitglied
    Du kannst keine Stateless Bean direkt mappen, alle Anfragen laufen zunächst an ein Servlet. An welches wird in der web.xml definiert. Dass es in deinem ersten geschilderten Fall überhaupt funktioniert, liegt vermutlich daran, dass der Application Server trotz des fehlenden Eintrags das richtige finden konnte. Spätestens zu dem Zeitpunkt, als du weitere Mappings hinzugefügt hast, war er dann aber damit überfordert.

    Bei mir sieht das Mapping so aus:
    Code (Text):

      <servlet>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <load-on-startup>1</load-on-startup>
      </servlet>
      <servlet-mapping>
        <servlet-name>javax.ws.rs.core.Application</servlet-name>
        <url-pattern>/ws/*</url-pattern>
      </servlet-mapping>
     
    Der Webservice aus deiner Stateless Bean wäre dann über
    Code (Text):
    ../ws/test/call
    erreichbar.
     
    Zuletzt bearbeitet: 6. Juli 2015
  4. Goldfish
    Goldfish Mitglied
    sauber danke, jetzt läuft alles :)
    ich wusste einfach nicht, wie der Eintrag in der web.xml aussehen musste :)
     
  5. Goldfish
    Goldfish Mitglied
    ich muss das Thema leider noch einmal erneut aufrollen. Ich bin auf ein neues Problem gestoßen, dass sich mit diesem hier nahezu deckt.

    Nachdem das Rumspielen vorhin funktioniert hat, bin ich eben auf die richtige Anwendung gegangen, wo der Kram am Ende laufen soll, wo das Mapping wieder nicht funktioniert. Ich habe auf dem Server 2 WebServices laufen und den Eintrag für die EJBs in die web.xml hinzugefügt. Aber aus irgendeinem Grund mapped die URL nicht. Das Servlet scheint erreicht zu werden, aber es kann wohl die Ressource nicht auflösen und ich kann mir nicht erklären wieso.

    Code (Text):

    <!-- Für JBoss, damit nicht nach mehreren RS Implementierungen gesucht wird. -->
        <context-param>
            <param-name>resteasy.scan</param-name>
            <param-value>false</param-value>
        </context-param>
        <context-param>
            <param-name>resteasy.scan.providers</param-name>
            <param-value>false</param-value>
        </context-param>
        <context-param>
            <param-name>resteasy.scan.resources</param-name>
            <param-value>false</param-value>
        </context-param>


        <listener>
            <listener-class>
                com.sun.xml.ws.transport.http.servlet.WSServletContextListener
            </listener-class>
        </listener>
        <servlet>
            <servlet-name>FiverxLinkSecurityServiceServlet</servlet-name>
            <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet>
            <servlet-name>FiverxLinkServiceServlet</servlet-name>
            <servlet-class>com.sun.xml.ws.transport.http.servlet.WSServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>

        <servlet-mapping>
            <servlet-name>FiverxLinkSecurityServiceServlet</servlet-name>
            <url-pattern>/FiverxLinkSecurityService</url-pattern>
        </servlet-mapping>
        <servlet-mapping>
            <servlet-name>FiverxLinkServiceServlet</servlet-name>
            <url-pattern>/FiverxLinkServiceService</url-pattern>
        </servlet-mapping>
        <session-config>
            <session-timeout>120</session-timeout>
        </session-config>


        <servlet>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>javax.ws.rs.core.Application</servlet-name>
            <url-pattern>app/*</url-pattern>
        </servlet-mapping>
     
    Die Bean ist die gleiche wie eben gerade. Aber ich erhalte nun immer die Exception:

    Code (Text):

    13:01:16,661 WARN  [org.jboss.resteasy.core.ExceptionHandler] (default task-27) failed to execute: javax.ws.rs.NotFoundException: Could not find resource for full path: http://localhost:8080/FiverxLinkTest-0.0.0-SNAPSHOT/app/test/call
        at org.jboss.resteasy.core.registry.ClassNode.match(ClassNode.java:73) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.core.registry.RootClassNode.match(RootClassNode.java:48) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.core.ResourceMethodRegistry.getResourceInvoker(ResourceMethodRegistry.java:444) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.getInvoker(SynchronousDispatcher.java:234) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:171) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:220) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:56) [resteasy-jaxrs-3.0.10.Final.jar:]
        at org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:51) [resteasy-jaxrs-3.0.10.Final.jar:]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) [jboss-servlet-api_3.1_spec-1.0.0.Final.jar:1.0.0.Final]
        at io.undertow.servlet.handlers.ServletHandler.handleRequest(ServletHandler.java:85) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.security.ServletSecurityRoleHandler.handleRequest(ServletSecurityRoleHandler.java:61) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.ServletDispatchingHandler.handleRequest(ServletDispatchingHandler.java:36) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at org.wildfly.extension.undertow.security.SecurityContextAssociationHandler.handleRequest(SecurityContextAssociationHandler.java:78)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.security.SSLInformationAssociationHandler.handleRequest(SSLInformationAssociationHandler.java:131) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.security.ServletAuthenticationCallHandler.handleRequest(ServletAuthenticationCallHandler.java:56) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.security.handlers.AbstractConfidentialityHandler.handleRequest(AbstractConfidentialityHandler.java:45) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.security.ServletConfidentialityConstraintHandler.handleRequest(ServletConfidentialityConstraintHandler.java:63) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.security.handlers.AuthenticationMechanismsHandler.handleRequest(AuthenticationMechanismsHandler.java:58) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.security.CachedAuthenticatedSessionHandler.handleRequest(CachedAuthenticatedSessionHandler.java:70) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.security.handlers.SecurityInitialHandler.handleRequest(SecurityInitialHandler.java:76) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at org.wildfly.extension.undertow.security.jacc.JACCContextIdHandler.handleRequest(JACCContextIdHandler.java:61)
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.server.handlers.PredicateHandler.handleRequest(PredicateHandler.java:43) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.handleFirstRequest(ServletInitialHandler.java:261) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.dispatchRequest(ServletInitialHandler.java:247) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler.access$000(ServletInitialHandler.java:76) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.servlet.handlers.ServletInitialHandler$1.handleRequest(ServletInitialHandler.java:166) [undertow-servlet-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.server.Connectors.executeRootHandler(Connectors.java:197) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at io.undertow.server.HttpServerExchange$1.run(HttpServerExchange.java:759) [undertow-core-1.1.0.Final.jar:1.1.0.Final]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_75]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_75]
        at java.lang.Thread.run(Thread.java:745) [rt.jar:1.7.0_75]
     
     
Die Seite wird geladen...

URL-Mapping mit Stateless Beans - Ähnliche Themen

RollesAllowed und Stateless kombinieren
RollesAllowed und Stateless kombinieren im Forum Allgemeines EE
Hello World mit Stateless Session Bean - Was mache ich falsch?
Hello World mit Stateless Session Bean - Was mache ich falsch? im Forum Allgemeines EE
Empfehlung für stateless Webframework
Empfehlung für stateless Webframework im Forum Web Tier
Unterschied Stateless, Stateful und Singelton?
Unterschied Stateless, Stateful und Singelton? im Forum Hausaufgaben
"stateless" vs "stateful" entwurf
"stateless" vs "stateful" entwurf im Forum Allgemeines EE
Thema: URL-Mapping mit Stateless Beans