ibatis-user-java mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From chris.mccau...@gsa.gov
Subject Re: TransactionManager thorowing NPE
Date Thu, 23 Aug 2007 19:23:36 GMT
No explicit Transaction Handling:


Call to Servlet is JavaScsript :

xmlHttp.open("GET", url, true);
XMLHttpRequest.send(null)
blah, blah this all works OK...


SERVLET:

public void doGet(HttpServletRequest request, HttpServletResponse 
response)
                        throws ServletException, IOException {
 

                int key1 = Integer.parseInt(request.getParameter("key1"));
                int key2 = Integer.parseInt(request.getParameter("key2"));
 
                Service service = new Service();
 
                //SUGGESTED TEST - PASSES!!
                DataSource dataSource = null;
                try{
                        Context initContext = new InitialContext();
                        dataSource = (DataSource) initContext.lookup(
"java:AMWEB");
                } catch (NamingException ne){
                        ne.printStackTrace();
                        System.out.println("  NamingException: " + 
ne.getMessage());
                }
                System.out.println("  dataSource: " + dataSource);
 
                try{
                        service.deleteAttachment(fileLocation, key1, 
key2);

                }catch(DAOException e){
                        e.printStackTrace();
                        System.out.println(e.getClass().getName() + " : " 
+ e.getMessage());
                } catch(Exception e){
                        e.printStackTrace();
                        System.out.println(e.getClass().getName() + " : " 
+ e.getMessage());
                }
 
                System.out.println(" RemoveAttachmentServlet returning." 
);
 
                // Write XML to response.
                response.setContentType("text/html");
                response.getWriter().write("removed");
        }

Service Layer:

Connects to a WebService (Axis) then returns....

<CODE>
        DaoManager daoManager = DAOFactory.getDAOManager();
        SQLMapAttachmentDAOImpl dao = new 
SQLMapAttachmentDAOImpl(daoManager); 
        rc += dao.deleteAttachments(key1);
</CODE>


WHERE THE SQLMapImpl is this 
<CODE>

public class SQLMapAttachmentDAOImpl extends SqlMapDaoTemplateWrapper 
implements AttachmentDAO
{

        /**
         * 
         * @param key1
         * @param key2
         * @return
         */
        public int deleteSRCVisitAttachment(Integer key1, Integer key2) 
throws IOException, ServiceException, FactoryException {

                Map parametersMap = new HashMap();
                parametersMap.put("key1", key1);
                parametersMap.put("key2", key2);

                delete("deleteAttachment", parametersMap);

                return 1;
        }
}

SQL

   <delete id="deleteAttachment" parameterClass="java.util.Map">
        DELETE 
          FROM TABLE
         WHERE TABLE.KEY1 = #key1#
           AND TABLE.KEY2 = #key2#
    </delete>
</CODE>


Thank you, 
Christopher

~~~~~~~~~~~~~~~~~
Christopher McCauley
Unisys Consultant
GSA - Federal Acquisition Service
CP3 11028B
(703) 605 9160
chris.mccauley@gsa.gov
chris.mccauley@unisys.com




"Christopher Lamey" <clamey@localmatters.com> 
08/22/2007 03:17 PM
Please respond to
user-java@ibatis.apache.org


To
user-java@ibatis.apache.org
cc

Subject
Re: TransactionManager thorowing NPE






So is this datasource not working at all, or only for transactions?

If you can use the datasource to do selects ok, then the datasource is 
setup
correctly and it's a transaction manager issue.

If you can't, then it's a jndi setup thing.  I think because you could do
the InitialContext stuff, it isn't a jndi setup thing.  And if that's 
true,
then I'd like to see the code around this to see how you're handling
transactions.


On 8/22/07 11:24 AM, "chris.mccauley@gsa.gov" <chris.mccauley@gsa.gov>
wrote:

> This makes no difference to anything...that I can see, at least........
> 
> 
> Thank you, 
> Christopher
> 
> ~~~~~~~~~~~~~~~~~
> Christopher McCauley
> Unisys Consultant
> GSA - Federal Acquisition Service
> CP3 11028B
> (703) 605 9160
> chris.mccauley@gsa.gov
> chris.mccauley@unisys.com
> 
> 
> 
> 
> "Yee, Richard K CTR DMDC" <Richard.Yee.ctr@osd.pentagon.mil>
> 08/21/2007 06:16 PM
> Please respond to
> user-java@ibatis.apache.org
> 
> 
> To
> user-java@ibatis.apache.org
> cc
> 
> Subject
> RE: TransactionManager thorowing NPE
> 
> 
> 
> 
> 
> 
> Is this what you are using for your sqlmap-config.xml?
> 
>> 
>> <?xml version="1.0" encoding="UTF-8" ?>
>> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map
> Config
>> 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
>> <sqlMapConfig>
>>     <settings useStatementNamespaces="false" />
>> 
>>     <!-- JNDI Example -->
>>         <transactionManager type="JDBC">
>>                 <dataSource type="JNDI">
>>                         <property name="DBJndiContext" value=
>> "java:DATASOURCE"/>
>>                 </dataSource>
>>         </transactionManager>
>> 
>>         <sqlMap resource="dao/File1.xml" />
>>         <sqlMap resource="dao/File2.xml" />
>>         <sqlMap resource="dao/File3.xml" />
>> </sqlMapConfig> 
> 
> If so, I think your property setting for your JNDI datasource is
> incorrect. I think it should be:
> <property name="DataSource" value="java:DATASOURCE"/>
> 
> Notice that the property name is DataSource, not DBJndiContext
> 
> -Richard
> 
> 
> -----Original Message-----
> From: chris.mccauley@gsa.gov [mailto:chris.mccauley@gsa.gov]
> Sent: Tuesday, August 21, 2007 12:12 PM
> To: user-java@ibatis.apache.org
> Subject: RE: TransactionManager thorowing NPE
> 
> 
> Well, bcak to it:
> <CODE> 
>                 //TEST
>                 DataSource dataSource = null;
>                 try{
>                         Context initContext = new InitialContext();
>                         dataSource = (DataSource)
> initContext.lookup("java:REALNAME");
>                 } catch (NamingException ne){
>                         ne.printStackTrace();
>                         System.out.println("  NamingException: " +
> ne.getMessage());
>                 }
> 
>                 System.out.println("  dataSource: " + dataSource);
> </CODE> 
> 
> This test returns : 2007-08-21 15:08:25,852 INFO  [STDOUT]   dataSource:
> org.jboss.resource.adapter.jdbc.WrapperDataSource@1d4ee7e
> 
> So I got that goin' for me.....
> 
> Still get the NPE.....
> 
>  Caused by: java.lang.NullPointerException
> 2007-08-21 15:08:26,733 INFO  [STDOUT]         at
> com.ibatis.dao.engine.impl.StandardDaoManager.getTransaction(StandardDao
> Manager.java:108)
> 2007-08-21 15:08:26,733 INFO  [STDOUT]         at
> com.ibatis.dao.client.template.SqlMapDaoTemplate.getSqlMapExecutor(SqlMa
> pDaoTemplate.java:60)
> 2007-08-21 15:08:26,733 INFO  [STDOUT]         at
> com.ibatis.dao.client.template.SqlMapDaoTemplate.delete(SqlMapDaoTemplat
> e.java:142) 
> 2007-08-21 15:08:26,733 INFO  [STDOUT]         at
> gov.gsa.base.dao.SqlMapDaoTemplateWrapper.delete(SqlMapDaoTemplateWrappe
> r.java:41) 
> 2007-08-21 15:08:26,733 INFO  [STDOUT]         ... 25 more
> 2007-08-21 15:08:26,733 INFO  [STDOUT]
> gov.gsa.base.exception.DAOException : java.lang.NullPointerException
> 2007-08-21 15:08:26,733 INFO  [STDOUT]  RemoveAttachmentServlet
> returning. 
> 
> 
> 
> 
> 
> 
> 
> 
> 
> Ack, I hate NPEs, they're so embarrassing.  iBATIS should never throw
> one.
> Once we find out why it does in this case, we'll fix it.
> 
> The most likely source is this:   "java:DATASOURCE"
> 
> Make sure this works in your environment:
> 
>   DataSource dataSource = (DataSource)
> initCtx.lookup("java:DATASOURCE");
> 
> Clinton
> 
> -----Original Message-----
> From: Christopher Lamey [mailto:clamey@localmatters.com]
> Sent: August-16-07 8:43 AM
> To: user-java@ibatis.apache.org
> Subject: Re: TransactionManager thorowing NPE
> 
> Well, that looks ok.
> 
> Could the transaction be closed or committed early, before the delete?
> 
> On 8/16/07 6:12 AM, "chris.mccauley@gsa.gov" <chris.mccauley@gsa.gov>
> wrote:
> 
>> Pretty straight forward....I assume we are using some default
> Transaction
>> Manager..
>> 
>> <?xml version="1.0" encoding="UTF-8" ?>
>> <!DOCTYPE sqlMapConfig PUBLIC "-//ibatis.apache.org//DTD SQL Map
> Config
>> 2.0//EN" "http://ibatis.apache.org/dtd/sql-map-config-2.dtd">
>> <sqlMapConfig>
>>     <settings useStatementNamespaces="false" />
>> 
>>     <!-- JNDI Example -->
>>         <transactionManager type="JDBC">
>>                 <dataSource type="JNDI">
>>                         <property name="DBJndiContext" value=
>> "java:DATASOURCE"/>
>>                 </dataSource>
>>         </transactionManager>
>> 
>>         <sqlMap resource="dao/File1.xml" />
>>         <sqlMap resource="dao/File2.xml" />
>>         <sqlMap resource="dao/File3.xml" />
>> </sqlMapConfig>
>> 
>> 
>> 
>> Thank you, 
>> Christopher
>> 
>> 
>> 
>> 
>> What does your transaction configuration look like?  What transaction
>> manager are you using?
>> 
>> 
>> On 8/15/07 3:28 PM, "chris.mccauley@gsa.gov" <chris.mccauley@gsa.gov>
>> wrote:
>> 
>>> 
>>> I am accessing a servlet ( within same app context) with an asynch
> call
>> from a
>>> struts app.  Part of the work is a database call (delete) usig iBatis
>> SQLMap.
>>> 
>>> We have no issues with iBatis prior, (except performance, but thats a
>>> different thread :>) )
>>> 
>>> Seems like a Transaction issue? Any ideas?
>>> 
>>> gov.gsa.base.exception.DAOException: java.lang.NullPointerException
>>> at gov.gsa.base.dao.SqlMapDaoTemplateWrapper.delete(Unknown Source)
>>> at 
>>> 
>> 
> gov.gsa.base.service.file.SQLMapAttachmentDAOImpl.deleteSRCVisitAttachme
> nt(U
> nk
>>> nown Source) 
>>> at 
>> 
> gov.gsa.base.service.file.AttachmentService.deleteSRCAttachment(Unknown
>>> Source) 
>>> at gov.gsa.base.servlet.RemoveAttachment.doGet(Unknown Source)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:697)
>>> at javax.servlet.http.HttpServlet.service(HttpServlet.java:810)
>>> at 
>>> 
>> 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tion
> Fi
>>> lterChain.java:252)
>>> at 
>>> 
>> 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erCh
> ai
>>> n.java:173) 
>>> at 
>>> 
>> 
> org.jboss.web.tomcat.filters.ReplyHeaderFilter.doFilter(ReplyHeaderFilte
> r.ja
> va
>>> :81) 
>>> at 
>>> 
>> 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(Applica
> tion
> Fi
>>> lterChain.java:202)
>>> at 
>>> 
>> 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilt
> erCh
> ai
>>> n.java:173) 
>>> at 
>>> 
>> 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValv
> e.ja
> va
>>> :213) 
>>> at 
>>> 
>> 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValv
> e.ja
> va
>>> :178) 
>>> at 
>>> 
>> 
> org.jboss.web.tomcat.security.CustomPrincipalValve.invoke(CustomPrincipa
> lVal
> ve
>>> .java:39) 
>>> at 
>>> 
>> 
> org.jboss.web.tomcat.security.SecurityAssociationValve.invoke(SecurityAs
> soci
> at
>>> ionValve.java:159)
>>> at 
>>> 
>> 
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(Authenticator
> Base
> .j
>>> ava:407) 
>>> at 
>>> 
>> 
> org.jboss.web.tomcat.security.JaccContextValve.invoke(JaccContextValve.j
> ava:
> 59
>>> ) 
>>> at 
>>> 
>> 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java
> :126
> )
>>> at 
>>> 
>> 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java
> :105
> )
>>> at 
>>> 
>> 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.
> java
> :1
>>> 07) 
>>> at 
>> 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:1
> 48)
>>> at 
>> 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:85
> 6)
>>> at 
>>> 
>> 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.processC
> onne
> ct
>>> ion(Http11Protocol.java:744)
>>> at 
>>> 
>> 
> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint
> .jav
> a:
>>> 527) 
>>> at 
>>> 
>> 
> org.apache.tomcat.util.net.MasterSlaveWorkerThread.run(MasterSlaveWorker
> Thre
> ad
>>> .java:112) 
>>> at java.lang.Thread.run(Thread.java:595)
>>> Caused by: java.lang.NullPointerException
>>> at 
>>> 
>> 
> com.ibatis.dao.engine.impl.StandardDaoManager.getTransaction(StandardDao
> Mana
> ge
>>> r.java:108) 
>>> at 
>>> 
>> 
> com.ibatis.dao.client.template.SqlMapDaoTemplate.getSqlMapExecutor(SqlMa
> pDao
> Te
>>> mplate.java:60)
>>> at 
>>> 
>> 
> com.ibatis.dao.client.template.SqlMapDaoTemplate.delete(SqlMapDaoTemplat
> e.ja
> va
>>> :142) 
>>> ... 26 more 
>>>  gov.gsa.base.exception.DAOException : java.lang.NullPointerException
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> 
>>> Thank you, 
>>> Christopher
>>> 
>>> ~~~~~~~~~~~~~~~~~
>>> Christopher McCauley
>>> Unisys Consultant
>>> GSA - Federal Acquisition Service
>>> CP3 11028B
>>> (703) 605 9160
>>> chris.mccauley@gsa.gov
>>> chris.mccauley@unisys.com
>> 
>> 
>> 
>> 
> 
> 
> 
> 
> 
> 




Mime
View raw message