Неверный целевой URL - PullRequest
0 голосов
/ 22 апреля 2020

Я настроил свой проект для загрузки по этому URL:

http://localhost:7101/foo/rs/user/home

Однако, когда я развертываю приложение через JDeveloper, я вижу это на вкладке Отладка: IntegratedWebLogicServer в IDE:

Target Application WADL -- http://localhost:7101/foo/application.wadl
Target URL -- http://localhost:7101/foo/user/home

Обратите внимание, что часть /rs отсутствует. Это в основном costiti c (сайт корректно загружается в браузере при использовании правильного URL), но, помимо путаницы, это может быть признаком некоторой проблемы конфигурации. Откуда JDeveloper получает этот URL-адрес?


Вот некоторые из, надеюсь, соответствующих настроек:

  • \ ViewController \ ViewController.jpr

    <hash n="oracle.jdeveloper.model.J2eeSettings">
        <value n="j2eeWebAppName" v="Foo-ViewController-webapp"/>
        <value n="j2eeWebContextRoot" v="foo"/>
    </hash>
    
  • ViewController \ public_html \ WEB-INF \ web. xml

    <?xml version = '1.0' encoding = 'windows-1252'?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
            version="2.5" xmlns="http://java.sun.com/xml/ns/javaee">
    <filter>
        <filter-name>JpsFilter</filter-name>
        <filter-class>oracle.security.jps.ee.http.JpsFilter</filter-class>
        <init-param>
        <param-name>enable.anonymous</param-name>
        <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>JpsFilter</filter-name>
        <url-pattern>/*</url-pattern>
        <dispatcher>FORWARD</dispatcher>
        <dispatcher>INCLUDE</dispatcher>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <servlet>
        <servlet-name>jersey</servlet-name>
        <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>
        <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.example.foo.view.rest</param-value>
        </init-param>
        <init-param>
        <param-name>jersey.config.server.mvc.templateBasePath.jsp</param-name>
        <param-value>/WEB-INF/jsp</param-value>
        </init-param>
        <init-param>
        <param-name>jersey.config.server.provider.classnames</param-name>
        <param-value>org.glassfish.jersey.media.multipart.MultiPartFeature, org.glassfish.jersey.server.mvc.jsp.JspMvcFeature</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>jersey</servlet-name>
        <url-pattern>/rs/*</url-pattern>
    </servlet-mapping>
    <mime-mapping>
        <extension>js</extension>
        <mime-type>application/javascript</mime-type>
    </mime-mapping>
    <security-constraint>
        <web-resource-collection>
        <web-resource-name>Jersey resources</web-resource-name>
        <url-pattern>/rs/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
        <role-name>valid-users</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>
    <security-role>
        <role-name>valid-users</role-name>
    </security-role>
    <ejb-local-ref>
        <ejb-ref-name>ejb/FooEJB</ejb-ref-name>
        <ejb-ref-type>Session</ejb-ref-type>
        <local>com.example.foo.model.FooEJB</local>
        <ejb-link>FooEJB</ejb-link>
    </ejb-local-ref>
    <listener>
        <listener-class>com.example.foo.view.listeners.SessionListener</listener-class>
    </listener>
    </web-app>
    
  • com.example.foo.view.rest.UserService

    package com.example.foo.view.rest;
    
    
    import org.glassfish.jersey.server.mvc.Viewable;
    
    import java.util.HashMap;
    import java.util.Map;
    
    import javax.annotation.security.RolesAllowed;
    
    import javax.naming.NamingException;
    
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    
    
    @Path("user")
    @RolesAllowed("valid-users")
    public class UserService extends BaseService {
        public UserService() throws NamingException {
            super();
        }
    
        @GET
        @Path("/home")
        @Produces(MediaType.TEXT_HTML)
        public Response showHome() {
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("title", "Home");
            return Response.ok(new Viewable("/user/home", map)).build();
        }
    }
    
  • com.example.foo.view.rest.BaseService

    package com.example.foo.view.rest;
    
    
    import com.example.foo.commons.Constants;
    import com.example.foo.model.FooEJB;
    
    import javax.annotation.Resource;
    
    import javax.naming.InitialContext;
    import javax.naming.NamingException;
    
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import javax.ws.rs.core.Context;
    import javax.ws.rs.core.SecurityContext;
    
    
    public class BaseService {
        @Resource
        protected FooEJB fooEJB;
        @Context
        protected HttpServletRequest request;
        @Context
        protected HttpServletResponse response;
        @Context
        protected SecurityContext securityContext;
    
        public BaseService() throws NamingException {
            InitialContext context = new InitialContext();
            fooEJB = (FooEJB)context.lookup(Constants.EJB_JDNI_NAME);
        }
    }
    
...