我正在使用Eclipse开发一个在服务器上运行的Java项目。我有两个项目:
1) jbosswildfly
:一个Java代码由一些RESTful服务和一个Maven pom组成。
2) theWhoZoo-web
:另一个是包含一些html文件的网络项目。
我想合并这些项目,只有一个项目。我尝试将WebContent
文件夹从theWhoZoo-web
复制到jbosswildfly
,启动服务器,但我无法访问index.html
。
问题
合并这两个项目的最佳方法是什么,以便可以在同一台服务器上访问RESTful Services和index.html
?
由于
更新
我尝试运行JBoss index.html
,但获得404。
但是,当我调用其中一个RESTful Services时,它会返回一个结果。
e.g。 http://localhost:8080/jbosswildfly-1.0/category/list
但是,
http://localhost:8080/jbosswildfly-1.0/index.html
返回:
14:23:31,699 WARN [org.springframework.web.servlet.PageNotFound] (默认任务-4)找不到带URI的HTTP请求的映射 [/jbosswildfly-1.0/index.html]在DispatcherServlet中,名称为' rest'
我的pom.xml
有:
<plugin>
<groupId>org.wildfly.plugins</groupId>
<artifactId>wildfly-maven-plugin</artifactId>
<version>1.0.2.Final</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<outputDirectory>webapps</outputDirectory>
<warName>ROOT</warName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.3</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
<outputDirectory>deployments</outputDirectory>
<warName>ROOT</warName>
</configuration>
</plugin>
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.1"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
metadata-complete="false">
<!--
<servlet>
<servlet-name>rest</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
-->
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
</web-app>
WebAppInitializer.java
public class WebAppInitializer implements WebApplicationInitializer {
@Override
public void onStartup(ServletContext servletContext) throws ServletException {
AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
ctx.register(AppConfig.class);
ctx.setServletContext(servletContext);
Dynamic dynamic = servletContext.addServlet("rest", new DispatcherServlet(ctx));
dynamic.addMapping("/*");
dynamic.setLoadOnStartup(1);
}
答案 0 :(得分:1)
您必须将WebContent
文件夹下的文件从theWhoZoo-web
移至jbosswildfly
&#39; src/main/webapp
,因为maven
默认Web资源的文件夹,如果不是,则必须创建它。
如果您想将WebContent
保留为静态网络文件目录,可以配置pom.xml
,如:
...
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
<version>2.4</version>
<configuration>
<warSourceDirectory>WebContent</warSourceDirectory>
</configuration>
</plugin>
....
要使DispatchServlet忽略.html
,您可以
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/**/*.do</url-pattern>
</servlet-mapping>
在这种情况下,spring-mvc
只能拦截* .do请求,并且.html
请求可以绕过容器。
如果您的spring
项目中有很多链接,可能会将.html
扩展名更改为.jsp
更加容易。
如果.do
不够,那么您可以添加更多内容,例如
<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/**/*.do</url-pattern>
<url-pattern>/category/*</url-pattern>
<url-pattern>/somethingelse/*</url-pattern>
</servlet-mapping>
答案 1 :(得分:0)
嗯,它不会变得简单。
作为一般指南,您可能希望首先将源代码和测试从一个复制到另一个,确保它仍然构建并添加任何缺少的依赖项。 (我倾向于首先尝试将jbosswildfly移到Who-soo上)
然后将包含Web目录的资源从一个添加到另一个。编辑index.html和web.xml文件以反映新结构。
启动Web服务器并检查日志以查找任何异常。尝试自己修复它们,如果你不能再回到stackoverflow。