我正在开发一个应用程序,其前端将使用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