在JBoss 4.2.3中,我们可以配置项目
[jboss_server] /deploy/jboss-web.deployer/conf/web.xml
将被所有部署的应用程序采用.我们使用它来配置上下文参数,servlet和默认标记文件.
我们在war文件中部署了数十个应用程序,这是一个非常方便的工具.
这是如何在JBoss 7.1.1中完成的?我用Google搜索并搜索但似乎无法找到解决方案.
我有一个带注释的休息控制器,如下所示.我能够获得主机服务,但前提是我在web.xml中为每个服务配置完整路径:
@RestController
@RequestMapping("/service/")
public class StuffRestController
{
@RequestMapping("/getStuffList")
public List<Stuff> getStuffList() {
... make stuff ...
return stuffList;
}
... many other similar services ...
}
Run Code Online (Sandbox Code Playgroud)
这是我应用程序中唯一的弹簧资源; 虽然,我们正在使用弹簧安全.
以下是spring4-servlet.xml的唯一行:
<mvc:annotation-driven />
<context:component-scan base-package="com.me.stuff.presentation.controller" />
<context:component-scan base-package="com.me.stuff.security" />
Run Code Online (Sandbox Code Playgroud)
StuffRestController类驻留在"... controller"包中.
web.xml中:
<servlet>
<servlet-name>spring4</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>WEB-INF/spring4-servlet.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>spring4</servlet-name>
<url-pattern>/service/getStuffList</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
以上所有实际上都运行良好和花花公子,但在这个控制器中还有30个其他服务,我宁愿不为每个方法创建一个新的servlet映射.当我尝试"通配"映射时,会出现此问题.我试过/ service/,/ service和/ service/*.还有很多其他组合.
大多数都没有正确映射,我收到404错误.如果我使用/ service/*,它会在调用/ service/getStuffList时使用调度程序servlet,但它会响应:
WARNING: No mapping found for HTTP request with URI [/myapp/service/getStuffList] in DispatcherServlet with name 'spring4'
Run Code Online (Sandbox Code Playgroud)
我确信这对于URL映射的创建方式来说很简单,但它让我无法理解.