0

I am having an application where struts2 and hibernate is used. For restricting users from accessing unauthorized pages. I tried implementing struts interceptor. But after mentioning interceptor tag in struts.xml file, httpsession object in my java pages started throwing java.lang.NullPointerException. I was wondering if I cannot use struts interceptor when hibernate is used? Or are there any thing called hibernate interceptor to achieve my objective.

Stacktrace

java.lang.NullPointerException
    at com.uac.dao.RoleDaoImpl.listRoles(RoleDaoImpl.java:308)
    at com.uac.biz.RoleAction.viewRoles(RoleAction.java:193)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
    at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.intercept(ConversionErrorInterceptor.java:122)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:195)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:148)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:93)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:235)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ModelDrivenInterceptor.intercept(ModelDrivenInterceptor.java:89)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ScopedModelDrivenInterceptor.intercept(ScopedModelDrivenInterceptor.java:128)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.interceptor.ProfilingActivationInterceptor.intercept(ProfilingActivationInterceptor.java:104)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.interceptor.debugging.DebuggingInterceptor.intercept(DebuggingInterceptor.java:267)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:126)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.PrepareInterceptor.doIntercept(PrepareInterceptor.java:138)
    at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:148)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:164)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.AliasInterceptor.intercept(AliasInterceptor.java:128)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:176)
    at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    at org.apache.struts2.impl.StrutsActionProxy.execute(StrutsActionProxy.java:52)
    at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:468)
    at org.apache.struts2.dispatcher.ng.ExecuteOperations.executeAction(ExecuteOperations.java:77)
    at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:76)
    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:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:859)
    at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:602)
    at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    at java.lang.Thread.run(Unknown Source)

Struts.xml

<interceptors>
     <interceptor name="authentication" class="com.uac.biz.AuthenticationInterceptor">  </interceptor>  
    <interceptor-stack name="uac_auth">
        <interceptor-ref name="authentication" ></interceptor-ref>  
        <interceptor-ref name="defaultStack"></interceptor-ref>  
     </interceptor-stack>
</interceptors>......
......................
<action name="addUserRedirect" class="com.uac.biz.RoleAction" method="viewRoles">
    <interceptor-ref name="uac_auth" />
    <result name="success">/addUser.jsp</result>
</action>

piece of code using session object

roleList=new ArrayList();
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXX-----enterd into listRoleeees");
//Criteria roles=session.createCriteria(RolePojo.class);
**Query query= session.createQuery(" from RolePojo");**
result=roles.list();
System.out.println("XXXXXXXXXXXXXXXXXXXXXXXXXX-----after seesion");
for(Iterator it=result.iterator();it.hasNext();){
RolePojo rolepojo=(RolePojo) it.next();
roleList.add(new Pojo(rolepojo.getRoleId(),rolepojo.getRoleName()));
Roman C
  • 49,761
  • 33
  • 66
  • 176
Fayaz
  • 61
  • 1
  • 8
  • 1
    Without knowing what you actually did, diagnoses are impossible. Of course Struts 2 interceptors can be used with or without Hibernate. It's most likely you either configured something wrong, or implemented an interceptor improperly. – Dave Newton Aug 07 '12 at 13:33
  • Can u post some code or your stacktrace? – Uchenna Nwanyanwu Aug 07 '12 at 14:01
  • Hi, I have pasted the stacktrace, struts.xml and piece of code below. Does'nt hibernate session object work with interceptors? – Fayaz Aug 08 '12 at 12:45

3 Answers3

1

You can certainly use Struts2 and Hibernate together. A Struts2 interceptor is a great way to handle the access security that you are looking for.

In the question linked below, I provided an answer that should give you a starting point for how to use an interceptor to provide this functionality.

Sessions in struts2 application

As for the NullPointerException you are encountering, you would need to provide the stack trace and code examples of your struts.xml the Java code where the NPE is occurring.

Community
  • 1
  • 1
Steven Benitez
  • 10,936
  • 3
  • 39
  • 50
  • You need to paste in your stacktrace – Quaternion Aug 08 '12 at 01:54
  • @Fayaz The questions and answers on stackoverflow can be edited at any time to provide more information. Please edit your question and paste the stack trace in there (formatted nicely). As it stands right now, it's completely unreadable. – Steven Benitez Aug 08 '12 at 13:51
  • HI Steven, I am sorry...I had to do so becoz of character restriction..let me find if I can post in one shot... – Fayaz Aug 08 '12 at 18:20
0

Finally we could resolve this. We found the solution from http://www.mkyong.com/hibernate/hibernate-error-an-annotationconfiguration-instance-is-required-to-use/

Instead of @session, we created sessionfactory objects manually.

SessionFactory sessionfactory = new AnnotationConfiguration().configure().buildSessionFactory();

Thanks to all.

Fayaz
  • 61
  • 1
  • 8
-1

You can try Servlet Filter to filter request URL

ken_cqyou
  • 26
  • 3