0 0

嵌入式Jetty如何加载第二个Servlet之前能获得第一个Servlet的参数0

因为本人用嵌入式开发Web,所以没有配置web.xml,用main方法启动服务加载配置,但是因为用到cometd长连接,就出现的问题

如果是web.xml配置如下
<!-- Cometd配置 -->
	<servlet>
        <servlet-name>cometd</servlet-name>
        <servlet-class>org.cometd.server.CometdServlet</servlet-class>         
        <init-param>
			<param-name>jsonContext</param-name>
			<param-value>
				org.cometd.server.JettyJSONContextServer
			</param-value>
		</init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
        <servlet-name>cometd</servlet-name>
        <url-pattern>/cometd/*</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>initializer</servlet-name>
        <servlet-class>com.yixun.collector.controller.BayeuxInitializer</servlet-class>
        <load-on-startup>2</load-on-startup>
    </servlet>


但是我在JettyWebServer类中配置就出现了问题
public class JettyWebServer {
	public static void main(String[] args) throws Exception {
		Server server = new Server();// 创建服务
		server.setStopAtShutdown(true);// 在退出程序是关闭服务

		Connector connector = new SelectChannelConnector();// 创建一个连接
		connector.setPort(8080);// 连接的端口号一般是8080,这里根据服务需求进行设置
		connector.setHost("localhost");// ip地址
		server.addConnector(connector);// 添加连接

		ServletContextHandler context = new ServletContextHandler(server,
				"/collector", ServletContextHandler.SESSIONS);
		ContextLoaderListener listener = new ContextLoaderListener();
		context.setResourceBase("Webapp");
		context.addEventListener(listener);
		
		holder = new ServletHolder(new CometdServlet());
        holder.setInitParameter("jsonContext","org.cometd.server.Jetty                JSONContextServer");
		context.addServlet(holder, "/cometd/*");
		//加载BayeuxInitializer需要CometdServlet的参数,下面        //的BayeuxInitializer有写到,请问应该如何配置,才不会报空指针异常
		BayeuxInitializer bayeuxInitializer=new BayeuxInitializer();
		holder=new ServletHolder(bayeuxInitializer);
		context.addServlet(holder, "");

		server.setHandler(context);		
		server.start();
		server.join();
	}
}

BayeuxInitializer类的代码:
public class BayeuxInitializer extends GenericServlet
{
	private static final long serialVersionUID = 7280618021210587163L;

	public void init() throws ServletException
    {
        BayeuxServer bayeux = (BayeuxServer)getServletContext().getAttribute(BayeuxServer.ATTRIBUTE);       //按如上JettyWebServer配置,下面的一行会报空指针
          //就是说bayeux没有获得
        new HelloService(bayeux); //初始化服务类,与Servlet 关联上
    }

    public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException
    {
        throw new ServletException();
    }
    
}


异常信息如下:
java.lang.NullPointerException: null
	at org.cometd.server.AbstractService.<init>(AbstractService.java:94) ~[cometd-java-server-2.5.0-beta2.jar:na]
	at org.cometd.server.AbstractService.<init>(AbstractService.java:80) ~[cometd-java-server-2.5.0-beta2.jar:na]
	at com.yixun.collector.controller.HelloService.<init>(HelloService.java:16) ~[classes/:na]
	at com.yixun.collector.controller.BayeuxInitializer.init(BayeuxInitializer.java:34) ~[classes/:na]
	at javax.servlet.GenericServlet.init(GenericServlet.java:244) ~[javax.servlet-3.0.0.v201112011016.jar:na]
	at org.eclipse.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:492) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.servlet.ServletHolder.doStart(ServletHolder.java:312) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) [jetty-util-7.6.4.v20120524.jar:7.6.4.v20120524]
	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:778) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:258) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:699) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) [jetty-util-7.6.4.v20120524.jar:7.6.4.v20120524]
	at org.eclipse.jetty.server.handler.HandlerCollection.doStart(HandlerCollection.java:224) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.server.handler.ContextHandlerCollection.doStart(ContextHandlerCollection.java:167) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) [jetty-util-7.6.4.v20120524.jar:7.6.4.v20120524]
	at org.eclipse.jetty.server.handler.HandlerWrapper.doStart(HandlerWrapper.java:90) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.server.Server.doStart(Server.java:262) [jetty-all-8.1.4.v20120524.jar:8.1.4.v20120524]
	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:59) [jetty-util-7.6.4.v20120524.jar:7.6.4.v20120524]
	at com.yixun.collector.jetty.JettyWebServer.main(JettyWebServer.java:91) [classes/:na]

问题补充:再补充一下,
去掉
BayeuxInitializer bayeuxInitializer=new BayeuxInitializer(); 
        holder=new ServletHolder(bayeuxInitializer); 
        context.addServlet(holder, ""); 可以连接上,但是没有数据推送到前台
2012年7月10日 16:32
目前还没有答案

相关推荐

    嵌入式jetty服务器开发所有的依赖jar包

    嵌入式Jetty服务器开发是Java应用程序中常用的一种轻量级Web服务器实现,它允许开发者在无需外部服务器的情况下,直接将Web服务功能嵌入到应用中。本压缩包提供了进行嵌入式Jetty开发所需的所有关键依赖jar包,极大...

    嵌入式jetty运行所需jar包

    包括org.eclipse.jetty.servlet_7.1.6.v20100715.jar、org.eclipse.jetty.server.jar、org.eclipse.jetty.servlet.source_7.1.6.v20100715.jar三个jar包,在进行jetty嵌入式编程时需要用到。

    jetty嵌入式实例

    嵌入式Jetty允许开发者直接在应用程序中启动和管理Web服务器,无需单独部署或运行独立的服务器进程。在Java开发中,Jetty以其简单易用和灵活性著称,使得开发者能够快速地搭建和配置HTTP服务器,处理HTTP请求,支持...

    jetty 嵌入式开发源码

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,它允许开发者将Web服务器直接嵌入到他们的应用中,从而提供了极大的灵活性和控制权。Jetty被广泛应用于各种项目,从小型微服务到大型分布式系统,都有其...

    Jetty 9 Servlet容器

    总的来说,Jetty 9 Servlet容器以其轻量级、高效和灵活的特性,成为了Java Web开发中一个值得信赖的选择。无论是小型项目还是大型企业级应用,都能从中受益。通过深入理解和熟练掌握Jetty 9,开发者可以构建出更强大...

    在嵌入式jetty环境下运行struts2Annotation项目

    在嵌入式Jetty环境下运行Struts2 Annotation项目是一个常见的任务,特别是在开发和测试阶段,因为这种方式能够快速启动服务,而无需依赖大型服务器容器。本文将深入探讨如何配置和执行这个过程,以及涉及的关键技术...

    Java如何使用Jetty实现嵌入式的Servlet容器

    在Java中,实现嵌入式的Servlet容器可以使用Jetty,Jetty是一个Java实现的开源的servlet容器,可以作为一个完整的Web服务器和Servlet容器,同时也可以嵌入在Java应用程序中。在Java程序中调用Jetty可以实现嵌入式的...

    jetty6 嵌入式使用

    4. **配置web.xml**:虽然在嵌入式使用中不是必需的,但可以创建一个`web.xml`文件来配置Servlet,这有助于在其他非嵌入式环境中迁移应用。 5. **运行应用**:在Eclipse中运行`JettyStarter`类,Jetty服务器将在...

    jetty嵌入式服务器必须的jar包

    jetty嵌入式服务器开发所必须的jar包,本人使用jetty版本为6.1.3,jar包总数为9个,来自jetty:commons-el-1.0.jar,jasper-compiler-5.5.15,jasper-compiler-jdt-5.5.15.jar,jasper-runtime-5.5.15.jar,jetty-...

    jetty 8及依赖包

    总的来说,这个压缩包是一个极好的起点,无论是对Java Web开发初学者还是经验丰富的开发者,都能从中受益。通过研究Jetty 8的实现,你可以提升自己的技能,更好地理解和掌握Web服务器的工作原理,以及如何高效地使用...

    jetty嵌入式Httpserver

    在实际应用中,我们可以通过以下步骤来配置和启动一个嵌入式的Jetty服务器: 1. 添加依赖:在项目中引入Jetty的相关依赖库,这通常通过Maven或Gradle等构建工具来实现。 2. 创建Server实例:首先,我们需要创建一...

    jetty嵌入式服务器实例大全

    Jetty是一款轻量级、高性能的Java Web服务器和Servlet容器,因其开源、小巧且易于集成的特点,被广泛应用于各种项目中。本实例大全将全面解析Jetty在不同场景下的使用,帮助你深入理解和掌握Jetty的特性。 1. **...

    JAVA里使用Jetty作为轻量级嵌入式的Web容器

    Java中的Jetty是一个轻量级、高性能且可嵌入式的Web服务器和Servlet容器,它以其简单易用和高效性在开发社区中广受欢迎。本文将深入探讨Jetty的基本概念、特性以及如何在Java项目中使用它。 1. **Jetty简介** - ...

    jetty9.0.4嵌入式服务器开发所必须的全部jar包

    jetty嵌入式服务器开发所必须的全部jar包。本人使用jetty版本为9.0.4,这个版本比较稳定些。jar包数据很多,最后集中在jetty-all中,再外引入一下servlet-api-这个包,是与9.0.4配套的。 好东西,大家分享。

    SpringBoot之配置嵌入式Servlet容器.pdf

    要注册一个Servlet组件,首先需要编写一个继承自HttpServlet的Servlet实现类,然后创建一个ServletRegistrationBean的Bean,将Servlet实例包装后添加到Spring Boot的Bean容器中,并且可以设置Servlet的加载顺序等...

    一个支持servlet的web服务器.rar

    配置Servlet通常涉及到编写web.xml文件,这是一个部署描述符,其中包含了关于Servlet的信息,如Servlet名称、类名、URL映射以及初始化参数等。在web.xml中,你可以定义多个Servlet,并设置它们之间的关系,比如过滤...

    jetty嵌入式服务.rar

    1. **初始化服务器**:创建一个`Server`对象,并设置监听的端口号,例如`new Server(8080)`。 2. **添加HTTP配置**:使用`ServerConnector`来配置HTTP连接器,设置服务器的协议、端口等。 3. **配置Web应用上下文**...

    Jetty 学习资料汇总

    4. **嵌入式Jetty**:阐述如何将Jetty直接嵌入到应用程序中,实现更灵活的部署方式。 5. **故障排查与日志**:介绍如何配置和使用Jetty的日志系统,以及常见问题的解决方法。 通过上述内容的学习,你将能够熟练地...

    jetty相关

    - Jetty是一个开源项目,由Eclipse基金会维护,其设计目标是轻量、高效、灵活,特别适合嵌入式环境。 - 它支持最新的Servlet和JSP标准,包括Servlet 4.0和JSP 2.3,同时提供了WebSocket、HTTP/2等现代网络协议的...

    SpringBoot 注册自己的Servlet(三种方式)(源代码)

    SpringBoot 注册自己的Servlet(三种方式)(源代码) ...目前使用Spring的,更多是在web方面,所以Spring更多的是依赖Servlet容器,哪怕是springboot擅长做独立可执行的微服务应用程序,其内部也包含一个嵌入式Jetty。

Global site tag (gtag.js) - Google Analytics