Spring CallableStatementCreator - PullRequest
       26

Spring CallableStatementCreator

2 голосов
/ 02 мая 2011

Привет, я новичок в Spring. Я пытался получить доступ к сохраненному процессу с помощью CallableStatementCreator, но я получаю следующую ошибку.

вызвано: org.springframework.beans.factory.BeanCreationException: Ошибка создания бина с именем 'SampleDataSource' определен в классе ресурс пути [StoredProcCallApplication-config.xml]: Не удалось установить бин; вложенными исключение java.lang.NoClassDefFoundError: орг / апач / Обще / бассейн / осущ / GenericObjectPool

StoredProcCall.java

package Utility;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Map;
import oracle.jdbc.driver.OracleTypes;
import org.springframework.jdbc.core.CallableStatementCreator;
public class StoredProcCall implements CallableStatementCreator {
    @Override
    public CallableStatement createCallableStatement(Connection arg0)
            throws SQLException {
        // TODO Auto-generated method stub
        CallableStatement cs=arg0.prepareCall("call test_proc(?,?)");
        cs.setString(1,"Vivek");
        cs.registerOutParameter(2, OracleTypes.CURSOR);
        return cs;}}

TestCallImpl.java

package com;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.sql.DataSource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.core.SqlOutParameter;
import org.springframework.jdbc.core.SqlParameter;
import org.springframework.jdbc.core.support.JdbcDaoSupport;
import Utility.StoredProcCall;
import oracle.jdbc.driver.OracleTypes;
import Utility.StoredProcCall;
public class TestCallImpl {
    StoredProcCall storedproccall=null;
    JdbcTemplate jdbcTemplate;

    public void setDataSource(DataSource dataSource)
    {this.jdbcTemplate=new JdbcTemplate(dataSource);
    }
    public StoredProcCall getstoredproc()
    {
    return storedproccall;
    }
    public void setstoredproc(StoredProcCall storedproccall)
        {
        this.storedproccall=storedproccall;
        }
    public void callProc()
    {
    List l=new ArrayList();
    l.add(new SqlParameter("ename",OracleTypes.VARCHAR));
    l.add(new SqlOutParameter("cur",OracleTypes.CURSOR,new RowMapper()
    {
    @Override
        public Object mapRow(ResultSet arg0, int arg1) throws SQLException {
            // TODO Auto-generated method stub
            Map m=new HashMap();
            m.put("empno",arg0.getInt("empno"));
            m.put("ename",arg0.getString("ename"));

            return m;   }}));
Map results=this.jdbcTemplate.call(new StoredProcCall(),l);
results.put("ename","Vivek");
System.out.println(results.get("ename"));}}

StoredProcCallApplication-config.xml

<?xml version="1.0" encoding="UTF-8"?> <beans ---> 
 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate" > 
 <property name="dataSource" ref="SampleDataSource">
</property> </bean> 

<bean id="SampleDataSource" class="org.apache.commons.dbcp.BasicDataSource" scope="singleton">
 <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
 <property name="url" value="jdbc:oracle:thin:@servername"/> 
  <property name="username" value="admin" />
   <property name="password" value="admin" /> 
    </bean>
         <bean id="storedproccall" class="Utility.StoredProcCall"> 
           </bean> 
          <bean id="TestClass" class="com.TestCallImpl"> 
      <property name="jdbcTemplate" ref="jdbcTemplate" />
       </bean> </beans>

Ответы [ 2 ]

2 голосов
/ 02 мая 2011

java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

Вам необходимы Apache Commons DBCP и Пул Apache Commons на вашем пути к классам.

Похоже, у вас есть только DBCP.

1 голос
/ 02 мая 2011

Похоже, вам нужно apache commons / dbcp на вашем пути к классам

<bean id="SampleDataSource" class="org.apache.commons.dbcp.BasicDataSource" ...
                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Вот зависимость Maven (при условии, что вы используете Maven):

<dependency>
    <groupId>commons-dbcp</groupId>
    <artifactId>commons-dbcp</artifactId>
    <version>1.4</version>
</dependency>
...