Duvida sobre integração do JAVA com uma DLL

Caros colegas do Portal JAVA,

Tem como instanciar um DLL varias vezes, em um mesmo programa JAVA, para que ela possa se comportar diferente para cada chamada??

Desde de já agradeço pela ajuda,

Suelmar Z. Castro

Há muito pouca documentação sobre JNI. Não falo da API, mas da arquitetura, e seu relacionamento com o OS.

Bem, pelo que percebi só é possível ter uma única instância por JVM. Se seu software rodar 2 vezes em VMs separadas haverá somente 2 instâncias da DLL.

Já questionei isto e como contornar em vários foruns e nunca tive resposta. Mas o que fizemos aqui é desenhar uma arquitetura para simular One-to-One (cada instância de uma classe, uma instância da DLL). Mas ficou muito complexo.

Vou tentar resumir a idéia:
Uma DLL gerenciadora de instâncias foi criada, ela contém os métodos JNI, e um método a mais para alocação de liberação de instâncias. A classe ao ser construída gera um ID (unico/estático) que é passado como parâmetro para a alocação de instância de DLL, esta DLL gerenciadora carrega a DLL com as regras de negócio que desejamos ter “n” instâncias e mapeia a instância ao ID. E a libera quando a classe for encerrada.

Este foi o jeito que encontramos. Uma outra saída é ainda ter uma única DLL, mas instanciar seu núcleo várias vezes, exemplo uma classe em C++, etc.

Se tiver informações sobre o assunto me interesso.

Eu resolvi o problema, modificando a a DLL, e armazenando cada instancia num array. Gerenciando na propria DLL.

Sobre a tentativa de fazer a VM instanciar a DLL varias vezes, não deu em nada.

Qualquer coisa volto a postar algo aqui no forum.