System.loadLibrary não pode ser chamado mais que uma única vez por uma biblioteca JNI durante seu carregamento. Portanto você não pode nem pôr esse código em uma classe normal Java (cujo deploy será feito em um diretório da aplicação), quanto mais em um JSP.
Essa classe deve ser isolada dentro de um .jar e copiada para o diretório jre/lib/ext da JVM que está rodando seu aplicativo web.
A DLL deve ser copiada para o diretório jre\bin de sua JVM (se for no Windows) ou para o diretório jre/bin de sua JVM (se for Linux/Unix), e o .jar deve ficar em jre\lib\ext.
Por enquanto não é possível encapsular uma DLL em um .jar.
Então agora eu estou tentando utilizar a DLL da seguinte maneira:
Dentro do Servlet eu mando carregar a Dll através do System.loadLibrary. Ela conecta a Dll pois eu fiz um tratamento e diz que está sendo carregada.
Até ai tudo bem, mas quando eu chamo um método que esta dentro dessa dll (exe: connect) ele da o erro HTTP Status 500.
Pq ele da esse erro?
Se ele já carregou a dll então os métodos que estão dentro dela estão disponíveis para eu utilizar não é?
Isole a classe que tem métodos nativos e sua DLL fora do seu application server.
Elas devem ficar instaladas em um lugar que ficará sempre carregado.
No seu caso, é mais fácil deixar a DLL em c:\windows\system32, por exemplo, e o .class dentro de um .jar no diretório <diretorio de instalação do JDK>\jre\lib\ext.
Quem tem de chamar loadLibrary é essa classe que tem métodos nativos. Esse loadLibrary nunca deve ser chamada mais de uma vez por uma classe durante o funcionamento da JVM. Por isso é que sugeri pôr fora do application server.
O servlet só referencia essa tal classe; nunca deve chamar diretamente loadLibrary.
Gostaria de saber se tenho que confugurar alguma coisa no Tomcat para poder utilizar uma dll.
Tenho que fazer alguma configuração no meu build.xml para copiar a dll em um diretório da minha página?
Na minha dll existe um método que conecta ao bando de dados (que pode ser Access, Oracle, SqlServer, Postgres e MySql). Gostaria de saber se tenho que ter o driver do banco instalado no meu servidor para rodar a aplicação web?