com iplanet ias JAR

时间:2009-11-12 05:03:21

标签: java junit glassfish ibatis sunone

过去几天我一直在努力解决这个问题。我试图在容器外测试DAO,但在运行测试用例时我收到错误:

  

使用名称创建bean时出错   'SqlMapClient'在类中定义   路径资源   [applicationContext.xml]:调用   init方法失败;嵌套   例外是   java.lang.NoClassDefFoundError:   COM /的iPlanet / IAS /管理/普通/ ASException

我正在使用NB来运行测试。人们一直在说我需要上面的类在测试用例的运行时类路径中。但是,我绝对无法找到那个罐子在哪里......?我已将我的项目lib文件夹中容器类路径+ jars上的所有jar包含到Unit测试的运行时类路径中。我仍然得到同样的错误。

谷歌搜索这个JAR也没有用。

也许有人在那里知道从哪里得到这个怪胎。希望能解决我的问题。

1 个答案:

答案 0 :(得分:2)

这不直接回答你的问题,但我有两个建议。首先,既然我知道您正在使用Spring,我建议停止使用您自己的ServiceLocator来查找JNDI数据源,就像您之前在question中提到的那样。相反,您应该使用Spring工具,然后将数据源注入您的bean。要获取JDNI数据源,请使用Spring的JndiObjectFactoryBean,类似于:

<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
    <property name="jndiName">
        <value>java:/comp/env/jdbc/myDS</value>
    </property>
</bean>

然后,当在容器外运行时(通常在运行测试时),我的建议是使用JNDI数据源。相反,您应该使用Spring工具以另一种方式向DAO提供数据源(例如,使用DriverManagerDataSource,运行测试时不需要真正的连接池)。这将允许您运行测试而无需启动对测试有意义的iPlanet(并且您不想测试iPlanet的连接池,您想要测试您的DAO)。

因此,在测试期间使用另一个数据访问配置创建一个applicationContext-test.xml。下面是DriverManagerDataSource的示例配置:

<bean id="dataSource"
         class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="..."/>
    <property name="url" value="..."/>
    <property name="username" value="..."/>
    <property name="password" value="..."/>
</bean>

这是推荐的方法(有关不同选项的详细信息,请查看Data access using JDBC一章)。

PS:我不知道com/iplanet/ias/admin/common/ASException来自哪里,但它显然是iPlanet本身之一。如果您真的想知道,请在iPlanet安装的所有jar中搜索,尤其是在其启动脚本中引用的jar。但我认为,在此之后你将面临JNDI问题,请加以警告。