struts-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From joey <realghost...@gmail.com>
Subject Re: Struts 2 exception problem
Date Wed, 04 Apr 2007 13:44:13 GMT
Are you sure you catch the HibernateException?


On 4/4/07, oguzhan tortop <oguzhantt@yahoo.com> wrote:
>
>
> hi all,
> i am using struts2 with hibernate i have a basic form which inputs the
> given
> data via hibernate. I get the hibernate session from my custom hibernate
> interceptor and from that interceptor i call the action which creates the
> hibernate transaction with data from its form and after that i return the
> success case from action but there is a finally statement in my hibernate
> interceptor which commits the transaction that's data filled in my action
> class. But for ex. if the data is exist in db before which means duplicate
> then it gives an error and when i get this error i return and ACTION.ERROR
> from my hibernate interceptor but what i see on the page is the SUCCESS
> result from the action class. What could be the problem  ? :) Any help
> will
> be usefull thanks for your support
> Here is my default stack and action conf.
>          <interceptor-stack name="defaultStack">
>                    <interceptor-ref name="exception"/>
>                    <interceptor-ref name="servlet-config"/>
>                    <interceptor-ref name="timer"/>
>                    <interceptor-ref name="logger"/>
>                    <interceptor-ref name="static-params"/>
>                    <interceptor-ref name="params"/>
>                    <interceptor-ref name="hibernate"/>
>            </interceptor-stack>
>
>
>         <action name="CreateService"
> class="tr.com.mkk.admin.action.CreateServiceAction">
>                <result name="input" >
>                        <param
> name="location">/admin/createService.jsp</param>
>                </result>
>                <result name="success" >
>                        <param
> name="location">/admin/viewService.jsp</param>
>                </result>
>                <interceptor-ref name="validation"/>
>                <interceptor-ref name="validatorErrors"/>
>                <interceptor-ref name="defaultStack"/>
>        </action>
> Here is my interceptor class :
>
> public String intercept(ActionInvocation invocation) throws Exception {
>                Action action = (Action)invocation.getAction();
>                if ( !(action instanceof BaseActionSupport) ) return
> invocation.invoke();
>                if (null == factoryName || null == packageName)
>                        throw new IllegalArgumentException("factoryName and
> packageName
> parameters should be given \n" +
>                                        "check parameters in xml file
> <param name='factoryName'> \n" +
>                                        "and <param
> name='packageName'>\n");
>
>                // adds factory to cache if not available
>                HibernateSessionFactory.addFactory(factoryName,
> packageName,
> extConfigFilePath);
>
>                HibernateSession hs = new HibernateSession();
>                hs.setFactoryName(factoryName);
>                ((BaseActionSupport)action).setHibernateSession(hs);
>
>                try {
>                        result = invocation.invoke();//calls the action
> here it creates
> transaction data
>                }
>
>                // Note that all the cleanup is done
>                // after the view is rendered, so we
>                // have an open session in the view
>
>                catch (Exception e) {
>                        hs.setRollBackOnly(true);
>                        if (e instanceof HibernateException) {
>                                LOG.error("HibernateException in
> execute()", e);
>                                return Action.ERROR;
>                        }
>                        else {
>                                LOG.error("Exception in execute()", e);
>                                throw e;
>                        }
>                }
>
>                finally {
>                        try {
>                                hs.disposeSession();//commits transaction ,
> and closes hibernate session
>                                return result;//expected result when an
> exception occurs with hibernate
> operations
>                        }
>                        catch (HibernateException e) {
>                                LOG.error("HibernateException in
> dispose()", e);
>                                return Action.ERROR;
>                        }
>                }
>        }
>
> ---------------------Action
> Class----------------------------------------------------------
> public class CreateServiceAction extends BaseActionSupport {
>
>        private Service service;
>
>        public CreateServiceAction() {
>                service = new Service();
>        }
>
>        public String execute() throws Exception {
>                ServiceManager.getInstance().createService(getSession(),
> service);//gets
> the hibernate session and sends it to the serviceManager object which
> creates transaction
>                set("service", service);
>                return SUCCESS;
>        }
>
>        public Service getService() {
>                return service;
>        }
> }
>
> *********
>
> --
> View this message in context:
> http://www.nabble.com/Struts-2-exception-problem-tf3525255.html#a9835135
> Sent from the Struts - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscribe@struts.apache.org
> For additional commands, e-mail: user-help@struts.apache.org
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message