2014-12-28 5 views
1

Я искал дни о том, как заставить это работать, но я не имел успеха.Tomcat 7 LifeCycleListener

У меня есть проект, который прослушивает порт 6789, и когда происходит соединение, мне нужно выполнить некоторые конкретные действия. Для этого я пытаюсь использовать listener, чтобы в любое время, когда мои серверы 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 &quot;%r&quot; %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!"); 
    } 

} 

Декларация боб не имеет смысла здесь, я получаю тот же результат и без декларации боба.

Я работал на этом для через несколько дней.

Я установил maven и использовал его для исправления зависимостей. Я создал новые проекты в новых рабочих пространствах, пытаясь исправить ошибки и ошибки пути класса. Я попытался переключиться с библиотеки Majorra JSF в библиотеку MyFaces, я получаю те же ошибки. Я честно нахожусь наедине с слушателем.

Любые идеи?

+1

Какие ошибки? Я не вижу проблемы, с которой вы столкнулись – kolossus

+0

wow Я забыл это поставить, я получаю исключение класса, не найденное в классе Listeners.PhoneListener –

ответ

1

Оказалось, что в моем коде не было ошибок, но была ошибка с размещением файлов. Я экспортировал проект PhoneListener как .jar и поместил его в папку/lib сервера, на котором я жду подключения.

Сервер не смог найти мой Listeners.PhoneListener, поскольку он не был в каталоге запуска самого сервера.