我在 Azure 的 Tomcat servlet 容器上部署时遇到问题。war
我通过 FTP 将文件复制到正确的文件夹连接到创建的网络应用程序空间。
我的网络应用程序
我已经在 Azure 上成功部署了一个 Spring MVC 简单的 Web 应用程序。URL 模式如下,两者都按预期工作:
http://myWebApp.azurewebsites.net/myWebApp
部署在 Azure Tomcathttp://localhost:8080/myWebApp
部署在本地 Tomcat
密钥文件web.xml
如下:
<web-app ... xsd schemas ... >
<display-name>myWebApp</display-name>
<servlet>
<servlet-name>mvc-dispatcher</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>mvc-dispatcher</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<context-param>... not important ...</context-param>
<listener>... not important ...</listener>
</web-app>
我的网络服务
好吧,当我想以同样的方式部署一个简单的 Web 服务并查看其内容时,问题就来了。
我决定使用jersey
图书馆。这是唯一的示例类:
@Path("Sample")
public class Sample {
@GET
@Path("/")
@Produces(MediaType.TEXT_XML)
public String Method() {
return "<tag>" + 123 + "</tag>";
}
}
在clean install
URL 上的本地 Tomcat 服务器上运行之后http://localhost:8080/myWebService/Sample
,它正确地为我提供了 XML <tag>123</tag>"
。
我希望像以前的myWebApp一样部署在 Azure 上,并尝试在 URL 上运行http://myWebService.azurewebsites.net/myWebService
。相反,它给了我404
错误,说请求的资源不可用。
这是web.xml
肯定的:
<web-app ... xsd schemas ... >
<display-name>myWebService</display-name>
<servlet>
<servlet-name>Jersey REST Service</servlet-name>
<servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
<init-param>
<param-name>com.sun.jersey.config.property.packages</param-name>
<param-value>nch.webservices</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>Jersey REST Service</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
我错过了什么,我做错了什么?我注意到这两个web.xml
文件之间的区别在于url-pattern
:
- myWebApp使用
/
- myWebService使用
/*
当我<url-pattern>/</url-pattern>
在myWebService上使用时,它要么在 localhost 上不起作用。感谢帮助。如果需要,请随时询问更多信息(希望使问题尽可能简短)。