java – 如何使用Jetty为Angular应用程序提供服务,还可以使用与Jersey相同的服务器?

我正在开发一个应用程序,其前端将使用Angular开发,后端使用Java / Jersey.我使用Jetty作为http服务器.我的目录结构如下:

src
    main
        java
            com.scibor
                Main
                SandboxResource
        webapp
            WEB-INF
                web.xml
            index.html
            bower_components . . .
            app.js

在Main中,我启动了我的Jetty Server,如下所示:

Server server = new Server(PORT);

WebAppContext context = new WebAppContext();

context.setResourceBase("src/main/webapp");

context.setContextPath("/");
context.setServer(server);

server.setHandler(context);

try {
    server.start();
    server.join();
} catch (Exception e) {
    e.printStackTrace();
}

我的web.xml配置如下:

<display-name>Web App</display-name>

<welcome-file-list>
    <welcome-file>index.html</welcome-file>
</welcome-file-list>

<servlet>
    <servlet-name>jersey</servlet-name>
    <servlet-class>org.glassfish.jersey.servlet.ServletContainer</servlet-class>

    <!-- Adds JSON processing to map java classes to JSON text in both directions -->
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>

    <!-- Tell the Jersey framework where to search for services.  Also, JAX-RS is needed for the JSON serialization -->
    <init-param>
        <param-name>jersey.config.server.provider.packages</param-name>
        <param-value>com.scibor</param-value>
    </init-param>

    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>jersey</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>

<mime-mapping>
    <extension>json</extension>
    <mime-type>text/html</mime-type>
</mime-mapping>

我的问题是,在这种配置下,只有MyResource中指定的RESTful端点被选中.但是,如果我去localhost:8080 /它告诉我没有找到资源.如果我将资源库更改为:

context.setResourceBase("src/main/webapp/index.html");

当我访问localhost时,它现在提供了我的角度项目:8080但它现在没有正确地提供任何我的RESTful端点.我如何配置这个以便在访问localhost:8080时提供角度应用程序,但是RESTful端点是否可以访问?

解决方法:

你有一些选择.
一个简单的方法是将带有index.html的角度基目录插入到后端应用程序的文件夹中.所以Angular app的url将是’localhost:8080 / app’,你的端点将在’localhost:8080’上提供.这将解决跨源政策问题.
第二种解决方案是使用grunt-proxy,它会将您的端点重定向到不同的端口. how to use grunt proxy

上一篇:java – 查找Jersey Parent Path


下一篇:java – Autowired为null,不适用于Jersey Spring