【发布时间】:2015-02-24 18:01:40
【问题描述】:
我一直在寻找如何让它发挥作用的几天,但我没有成功。
我有一个监听 6789 端口的项目,当建立连接时,我需要执行一些特定的操作。为此,我尝试使用listener,以便我的服务器Engine在建立连接时运行。
基本上,移动应用程序将连接到服务器的实例,一旦建立连接,服务器需要对用户进行身份验证,然后从手机接收数据并将其放入数据库中。如果有其他方法可以做到这一点,请告诉我。我查看了过滤器,但它们需要一个 url 路径才能激活,而且我也不知道如何使用一个 servlet,它会在建立连接时触发!
到目前为止,我的 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 声明在这里没有意义,无论有没有 bean 声明,我得到的结果都是一样的。
我已经为此工作了几天。
我已经安装了 maven 并用它来修复依赖关系。我在新的工作空间中创建了新项目,试图纠正和类路径错误。我试图从 Majorra JSF 库切换到 MyFaces 库,我得到了同样的错误。老实说,我对 Listener 束手无策。
有什么想法吗?
【问题讨论】:
-
什么错误?我没有看到您遇到的实际问题
-
哇,我忘了说,我在 Listeners.PhoneListener 类上遇到了一个未找到异常的类