配置
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@localhost:1521:gamutsoft"/>
<property name="username" value="tuser"/>
<property name="password" value="tuser"/>
</bean> 
错误:
java.lang.NumberFormatException: For input string: "tu"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
at java.lang.Integer.parseInt(Integer.java:449)
at org.apache.commons.dbcp.DESPlus.hexStr2ByteArr(DESPlus.java:72)
at org.apache.commons.dbcp.DESPlus.decrypt(DESPlus.java:156)
at org.apache.commons.dbcp.BasicDataSource.setUsername(BasicDataSource.java:824)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1114)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:900)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:322)
at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveValueIfNecessary(BeanDefinitionValueResolver.java:106)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1325)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:895)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:425)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:276)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:197)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:47)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4651)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5154)
at org.apache.catalina.core.StandardContext$1.call(StandardContext.java:5149)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:619)

解决方案 »

  1.   

    <property name="username" value="tuser"/>
    <property name="password" value="tuser"/>
    数据库帐号和密码 设置为  sa  密码 123456 试一试
      

  2.   

    查看一下哪里调用这个方法parseInt ,你的参数为字符串 ,不是数字字符串 ,不能转换为整形
      

  3.   

    把jdbc连接换成jndi连接就没问题了,不会报这个错误。。
      

  4.   

    换了之后报这个错误
    java.lang.NumberFormatException: For input string: "sa"
      

  5.   

    应该是什么地方在对username这些值转化成数字类型的。
      

  6.   

    找到原因了,commons-dbcp版本的问题,用的1.4版本,org.apache.commons.dbcp.BasicDataSource类中setUsername方法有对username进行转换,木有看明白为什么要这么转。。换成commons-dbcp-1.2.2.jar就没问题了(commons-pool版本用1.3、1.4、1.5都有这种情况)public void setUsername(String username)
    {
    String tempStr = username;
    try
    {
    DESPlus dp = new DESPlus();
    tempStr = dp.decrypt(username);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    this.username = tempStr;
    restartNeeded = true;
    }
    public String decrypt(String strIn)
    throws Exception
    {
    return new String(decrypt(hexStr2ByteArr(strIn)));
    }
    public static byte[] hexStr2ByteArr(String strIn)
    throws Exception
    {
    byte arrB[] = strIn.getBytes();
    int iLen = arrB.length;
    byte arrOut[] = new byte[iLen / 2];
    for (int i = 0; i < iLen; i += 2)
    {
    String strTmp = new String(arrB, i, 2);
    arrOut[i / 2] = (byte)Integer.parseInt(strTmp, 16);
    } return arrOut;
    }
      

  7.   

    代码格式。public void setUsername(String username)
    {
    String tempStr = username;
    try
    {
    DESPlus dp = new DESPlus();
    tempStr = dp.decrypt(username);
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    this.username = tempStr;
    restartNeeded = true;
    }
    public String decrypt(String strIn)
    throws Exception
    {
    return new String(decrypt(hexStr2ByteArr(strIn)));
    }
    public static byte[] hexStr2ByteArr(String strIn)
    throws Exception
    {
    byte arrB[] = strIn.getBytes();
    int iLen = arrB.length;
    byte arrOut[] = new byte[iLen / 2];
    for (int i = 0; i < iLen; i += 2)
    {
    String strTmp = new String(arrB, i, 2);
    arrOut[i / 2] = (byte)Integer.parseInt(strTmp, 16);
    } return arrOut;
    }