我已经尝试过在stackoverflow上编写的解决方案,但是没有一个解决了我的问题,对我来说可能有所不同。
我有两个模块,“email-service”(jar)和“email-service-web”(war)包装模块。我使用maven,“email-service-web”导入“email-service”jar文件。这可以按预期工作。
我在“email-service-web”WEB-INF文件夹中的web.xml如下所示:
<servlet>
<servlet-name>springServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
classpath*:/META-INF/spring/web-application-config.xml
</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springServlet</servlet-name>
<url-pattern>/*</url-pattern>
</servlet-mapping>
web-application-config.xml如下所示:
<import resource="classpath*:applicationContext-email-service-bootstrap.xml"/>
<import resource="classpath*:applicationContext-email-service-environment.xml"/>
<import resource="classpath*:applicationContext-email-service-process.xml"/>
<import resource="classpath*:applicationContext-email-service-integration.xml"/>
<context:component-scan base-package="com.company.emailservice"/>
IntelliJ表示它可以找到applicationContext- *文件,而不是以红色显示它们。我已经确认它们存在于email-service.jar文件中,并且jar文件存在于展开的email-service-web.war文件的lib文件夹中。另外,我尝试了各种路径建议作为classpath *:** / application * .xml等,没有任何反应。我的集成中有一个HTTP入站通道适配器,jetty无法找到它并给出了404。
弹簧部分没有启动,我应该从它获取日志垃圾邮件,但我没有。如果我将“电子邮件服务”转换为war包装项目,并将webapp结构移动到那里,一切正常。
我做错了什么?
编辑:
建议不要涉及WEB-INF,所以我移动了文件并更新了上面的问题。
此外,我的项目结构如下:
[email-service]
`--src
`--main
`--src
|--java (classes)
`--resources
|--applicationContext-email-service-bootstrap.xml
|--applicationContext-email-service-environment.xml
|--applicationContext-email-service-process.xml
`--applicationContext-email-service-integration.xml
[email-service-web]
`--src
`--main
|--src
| `--resources
| `--META-INF
| `--spring
| `--web-application-config.xml
`--webapp
`--WEB-INF
`--web.xml
答案 0 :(得分:1)
所以,正如M. Deinum所说,WEB-INF
文件夹不在类路径中,这最终是我的问题。
花了一段时间才弄清楚,因为HTTP集成端点(HTTP入站通道适配器)在前几次尝试中没有正确响应,但第3次和第4次请求却按预期响应。
将web-application-config.xml
放入资源文件夹确实解决了问题。