Я искал дни о том, как заставить это работать, но я не имел успеха.
У меня есть проект, который прослушивает порт 6789, и когда происходит соединение, мне нужно выполнить некоторые конкретные действия. Для этого я пытаюсь использовать прослушиватель, чтобы в любое время, когда мои серверы Engine
запускались при соединении.
В основном мобильное приложение собирается подключиться к экземпляру сервера, как только будет установлено соединение, серверу необходимо пройти аутентификацию пользователя, затем получить данные с телефона и поместить его в базу данных. Если есть другой способ сделать это, пожалуйста, дайте мне знать. Я просмотрел фильтры, но для этого нужен URL-адрес, и я также не знаю, как использовать сервлет, который будет срабатывать при подключении!
У меня есть это до сих пор в моем server.xml:
<Service name="Catalina">
<Connector connectionTimeout="20000" port="6789" protocol="HTTP/1.1"
redirectPort="8443" />
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
<Engine defaultHost="localhost" name="Catalina">
<Listener className="Listeners.EngineListener" />
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm"
resourceName="UserDatabase" />
</Realm>
<Host appBase="webapps" autoDeploy="true" name="localhost"
unpackWARs="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" pattern="%h %l %u %t "%r" %s %b" prefix="localhost_access_log."
suffix=".txt" />
<Context docBase="PhoneListener" path="/PhoneListener"
reloadable="true" source="org.eclipse.jst.jee.server:PhoneListener">
</Context>
</Host>
</Engine>
</Service>
У меня есть полный путь к файлу в <Listener>
. Точно так же я выполнил множество фильтров (аутентификация и noCache).
Класс, который реализует LifeCycleListener
находится здесь "
package Listeners;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import org.apache.catalina.LifecycleEvent;
import org.apache.catalina.LifecycleListener;
@ManagedBean
@SessionScoped
public class EngineListener implements LifecycleListener
{
@Override
public void lifecycleEvent(LifecycleEvent event)
{
// TODO Auto-generated method stub
System.out.println("The engine listener is working!");
}
}
Объявление бина здесь бессмысленно, я получаю тот же результат с объявлением bean и без него.
Я работаю над этим несколько дней.
Я установил maven и использовал его для исправления зависимостей. Я сделал новые проекты в новых рабочих пространствах, пытаясь исправить ошибки и ошибки класса. Я попытался переключиться с библиотеки Majorra JSF на библиотеку MyFaces, я получаю те же ошибки. Я честно нахожусь наедине с слушателем.
Есть идеи?
Оказывается, ошибок в моем коде не было, а ошибка с размещением файлов. Я экспортировал проект PhoneListener
как .jar
и поместил его в папку /lib сервера, на котором я жду подключения.
Сервер не смог найти мой Listeners.PhoneListener
как это было не в стартовом каталоге самого сервера.