У меня возникли проблемы с развертыванием в контейнере сервлетов Azure Tomcat. Я подключаюсь к созданному пространству веб-приложения с помощью FTP, копируя файл war
в нужную папку.
мое веб-приложение
Я успешно развернул простое веб-приложение Spring MVC в Azure. Шаблон 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>
моя веб-служба
Что ж, проблема возникает, когда я хочу таким же образом развернуть простой веб-сервис и посмотреть его содержимое.
Я решил использовать библиотеку jersey
. Вот единственный пример класса:
@Path("Sample")
public class Sample {
@GET
@Path("/")
@Produces(MediaType.TEXT_XML)
public String Method() {
return "<tag>" + 123 + "</tag>";
}
}
После clean install
и запуска на локальном сервере Tomcat по URL-адресу http://localhost:8080/myWebService/Sample
он правильно дает мне XML <tag>123</tag>"
.
Надеюсь, я развернул его в Azure так же, как и предыдущий myWebApp, и попытался запустить его по 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, он либо не работает на локальном хосте. Спасибо за помощь. Не стесняйтесь спрашивать дополнительную информацию, если это необходимо (хотел сделать вопрос как можно короче).