Pergunta

Eu estive lutando com isso por último par de dias. Eu estou tentando testar um DAO fora do recipiente, mas durante a execução do caso de teste eu estou recebendo o erro:

Erro na criação de feijão com nome 'SqlMapClient' definida na classe recurso caminho [ApplicationContext.xml]: invocação do método init falhou; aninhada exceção é java.lang.NoClassDefFoundError: com / iPlanet / ias / admin / common / ASException

Eu estou usando NB para executar os testes. pessoas foram dizendo que eu preciso da classe acima de estar no caminho de classe tempo de execução do caso de teste. No entanto, estou absolutamente incapaz de descobrir onde realmente que jar é ... ?? Eu incluí tudo o que frascos que estão em meus recipientes classpath frascos + na pasta meus projetos lib para o classpath de tempo de execução do teste de unidade. Ainda recebo o mesmo erro.

Também pesquisando para este JAR didnt trabalho.

Talvez alguém lá fora sabe onde conseguir este frasco de Freakin partir. E espero que fixo os meus problemas.

Foi útil?

Solução

Esta não responder diretamente sua pergunta, mas eu tenho dois conselhos. Em primeiro lugar, agora que eu sei que você está usando Spring, eu sugiro para parada usando seu próprio ServiceLocator para procurar a fonte de dados JNDI como você mencionou em uma anterior questão . Em vez disso, você deve usar instalações mola para isso e, em seguida, injetar a fonte de dados em teus feijão. Para se ter uma fonte de dados JDNI, use JndiObjectFactoryBean da Primavera, algo assim:

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

Então, quando executado fora do recipiente (normalmente quando a execução de testes), o meu conselho seria o de não usar uma fonte de dados JNDI. Em vez disso, você deve utilizar as instalações da Primavera para fornecer uma fonte de dados para seus DAOs de outra maneira (por exemplo, usando um DriverManagerDataSource, você não precisa de um pool de conexão real quando a execução de testes). Isso permitiria que você a executar os testes sem ter que começar iPlanet o que faz sentido para testar (e você não quiser testar pool de conexão do iPlanet, você quer testar suas DAOs).

Assim, criar um applicationContext-test.xml para ser usado durante o teste com outra configuração para o acesso a dados. Abaixo, um exemplo de configuração para o 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>

Esta é realmente a abordagem recomendada (verificar o capítulo Dados acesso usando JDBC para obter mais detalhes sobre as diferentes opções).

PS: Eu não tenho idéia de onde com/iplanet/ias/admin/common/ASException vem, mas é, obviamente, um dos si iPlanet. Se você realmente quiser saber, procurar em todas as jarras de seu iPlanet instalar, especialmente aquele referenciado no seu script de inicialização. Mas eu acho que você vai enfrentar problemas JNDI depois disso, ser avisado.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top