У меня есть веб-приложение, написанное с использованием Tomcat 6, и я пытаюсь заставить его работать с Tomcat 7. Во время запуска приложение, помимо прочего, регистрирует свой компонент веб-службы в каком-то удаленном каталоге. Для этого ему необходимо указать собственный URL. Следующий (немного наивный) метод должен возвращать URL-адрес веб-сервиса:
import org.apache.catalina.ServerFactory;
import org.apache.catalina.connector.Connector;
.
.
.
private String getWsUrl(ServletContext context)
throws UnknownHostException, MalformedURLException {
String host = java.net.InetAddress.getLocalHost().getCanonicalHostName();
int port = -1;
for (Connector c : ServerFactory.getServer().findServices()[0].findConnectors()) {
if (c.getProtocol().contains("HTTP")) {
port = c.getPort();
break;
}
}
URL wsURL = new URL("http", host, port, context.getContextPath()
+ C.WEB_SERVICE_PATH /* this is just a constant string */ );
return wsURL.toString();
}
Часть ServerFactory.getServer()
оказалась проблематичной: в Tomcat 7 нет класса org.apache.catalina.ServerFactory
. Любые предложения о том, как переписать это для Tomcat 7? Я также был бы рад иметь более переносимый, не специфичный для tomcat код.