`
illiqiang
  • 浏览: 10466 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

servlet中访问seam组件 报错

阅读更多
我想在我写的servlet里面访问seam组件

protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// TODO Auto-generated method stub
			 String	pass=req.getParameter("pass");
			 String name=req.getParameter("name");
			 
			 //访问seam组件   下面在别的地方可以--在本servlet里面访问不到
			 final EmployeeQuery employeeQuery = (EmployeeQuery) Component.getInstance(EmployeeQuery.class); //报错 在seam容器里面这里不会报错
			 //Object object=Component.getInstance("com.sunning.cross.ui.resources.client.rpc.SecurityService");
			 SecurityServiceImpl security=(SecurityServiceImpl) Component.getInstance(SecurityServiceImpl.class);
			 if(security.isLogin()){
				 
			 }else {
				 security.login(name, pass);
				 resp.sendRedirect("/Explorer.seam"); 
			 }
			 
	}


下面是错误信息

16:05:02,437 ERROR [[AutoLoginServlet]] Servlet.service() for servlet AutoLoginServlet threw exception
java.lang.IllegalStateException: No application context active
at org.jboss.seam.Component.forName(Component.java:1945)
at org.jboss.seam.Component.getInstance(Component.java:2005)
at org.jboss.seam.Component.getInstance(Component.java:1983)
at org.jboss.seam.Component.getInstance(Component.java:1977)
at org.jboss.seam.Component.getInstance(Component.java:1957)
at org.jboss.seam.Component.getInstance(Component.java:1952)
at com.sunning.cross.ui.explorer.server.servlet.AutoLoginServlet.doPost(AutoLoginServlet.java:37)
at com.sunning.cross.ui.explorer.server.servlet.AutoLoginServlet.doGet(AutoLoginServlet.java:26)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilter.java:96)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:235)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
at org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAssociationValve.java:190)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:433)
at org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.java:92)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.process(SecurityContextEstablishmentValve.java:126)
at org.jboss.web.tomcat.security.SecurityContextEstablishmentValve.invoke(SecurityContextEstablishmentValve.java:70)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
at org.jboss.web.tomcat.service.jca.CachedConnectionValve.invoke(CachedConnectionValve.java:158)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:330)
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:829)
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:598)
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:447)
at java.lang.Thread.run(Unknown Source)


解决方法
通过get方法访问
 protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)  
            throws ServletException, IOException {  
        new ContextualHttpServletRequest(req) {  
            public void process() throws Exception {  
                doLogin(req,resp);  
            }  
          }.run();  
    }
0
4
分享到:
评论
1 楼 illiqiang 2013-04-27  
问题已经解决 如下

package com.sunning.cross.ui.explorer.server.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jboss.seam.Component;
import org.jboss.seam.servlet.ContextualHttpServletRequest;

import com.sunning.cross.ui.resources.server.SecurityServiceImpl;

public class AutoLoginServlet extends HttpServlet{

	/**
	 * 自动登入servlet
	 */
	private static final long serialVersionUID = -8161391852391447226L;

	@Override
	protected void doGet(final HttpServletRequest req, final HttpServletResponse resp)
			throws ServletException, IOException {
		new ContextualHttpServletRequest(req) {
		    public void process() throws Exception {
		    	doLogin(req,resp);
		    }
		  }.run();
	}

	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		super.doGet(req, resp);
			 
	}
	
	protected void doLogin(HttpServletRequest req, HttpServletResponse resp)throws ServletException, IOException {
		 String	pass=req.getParameter("userpwd");
		 String name=req.getParameter("userid");
		 String dataId=req.getParameter("mailid");
		 if (dataId!=null&&!"".equals(dataId.trim())) {
			 req.getSession().setAttribute("auto_dataId", dataId.trim());
		 }
		 SecurityServiceImpl security=(SecurityServiceImpl)Component.getInstance("com.sunning.cross.ui.resources.client.rpc.SecurityService");
		 if(security.isLogin()){
			 
		 }else {				 
			 security.login(name, pass);	 
		 }
		 resp.sendRedirect("/Explorer.seam");
	}
	

}

相关推荐

    JBOSS SEAM组件中文手册

    JBOSS SEAM组件中文手册 Seam_2.0_Reference_zh_CN

    Seam - 语境相关的组件

    Seam - 语境相关的组件 ,学习seam的好资料.

    JBoss Seam 工作原理、seam和hibernate的范例、RESTFul的seam、seam-gen起步、seam组件、配置组件、jsf,jboss、标签、PDF、注解等等

    Seam - 语境相关的组件[满江红20071230]............................................................................................................................ 1 Java EE 框架...........................

    jboss-seam2.1

    Seam组件可能是 态义 关关 态 有状 的,包含与几个定 良好的上下文中任何一个相 的状 , 包括长开间运行上 下文、持久化上下文、业务流程上下文, 以及用户够交互中能 跨多个 Web请求保存的务 务上下文。

    jboss seam

    这是中文手册,Seam为持久化集成了JPA和Hibernate 3,为轻量化的异步性集成了EJB ... Seam组件可以同时作为一个Web Service进行调用,异步地从客户端JavaScript或者Google Web Toolkit,或者当然也可以直接从JSF调用。

    Seam 2.1 安全模块框架

    • 身份管理 - 用于管理Seam程序中所涉及的用户及角色的接口 • 权限验证 - 一个应用十分广泛的权限验证框架,支持用户角色、持久化和基于规则的权限设置,能够灵活地实现属于用户自己的安全设置 • 权限管理 - 一组...

    seam:在IE8中部分richface组件不能兼容的解决办法

    seam:在IE8中部分richface组件不能兼容的解决办法

    seam需要的jar包

    seam框架需要的所有jar包,支持seam ui组件

    jboss-seam 注解

    为一个类定义一个Seam组件。所有Seam组件都需要该注解。 @Scope @Scope(ScopeType.CONVERSATION) 定义默认的组件上下文。可以定义的值由 ScopeType 枚举:EVENT, PAGE, CONVERSATION, SESSION, BUSINESS_PROCESS, ...

    SEAM 中文开发指南

    SEAM 中文开发指南(官方)

    Jboss-Seam 2RC 中文翻译

    Seam为你的应用程序中所有的业务逻辑定义了一种统一的组件模型。 Seam组件可能是有状态的,包含与几个定义良好的上下文中任何一个相关联的状态, 包括长时间运行上下文、持久化上下文、业务流程上下文, 以及用户...

    Seam-语境相关的组件

    对JBoss Seam及其上下文相关的组件模型等的介绍 资源中包括两个文档,但是内容一样,怎么方便怎么看

    Seam2.0GA 中文开发指南

    Seam 中文开发指南 seam中文文档

    seam in action 中文 english

    seam in action 中文 english seam提供了快速开发 好长。netjava 新手学习的利器 中英文各一本,英文的好像不是很好

    seam 中文文档 pdf

    seam 中文文档 pdf 格式 JSF+EJB3.0快速开发框架Seam的中文版向导。。。

    jboss seam 中文文档集合

    个人收集整理的最全面seam文档 包括seam_reference(中、英) richfaces jsf a4j 以及seam一些其他主要功能

    JBoss_Seam--中文教程

    JBoss_Seam--中文、Seam教程,中文Seam针对初学者很好的讲解及实例。希望对您有所收获。

    seam 2中文手册

    seam下一代web开发框架

    seam 2.1 参考手册

    作为第一选择的显示层,这包含着一些技术细节:我们所作的是让你能够明显的通过Wicket使用Seam组件,从Wicket内部类中使用Annotations,能够控制你的业务进程管理任务等。简单地说,就是所有的控制事务你能够在你的...

    jboss seam 架设Eclipse 中常见的错误解决.doc

    jboss seam 架设Eclipse 中常见的错误解决.doc

Global site tag (gtag.js) - Google Analytics