Acessar métodos de uma DLL

Teria como eu acessar uma DLL que foi feita em Java mas para ser utilizada para ASP? Se existe a possibilidade, como eu poderia fazer para utilizar esses métodos no meu programa Java?

DLL feita em java??

Sim, em java! todo o código dela é feito em java!

como você fez para escrever uma DLL em java??

Você está usndo JNDI? Ou algum conversor de Java para código nativo? :?:

Essa é uma DLL usada em componentes ASP, mas todo o seu código internamente foi desenvolvido em Java. Eu queria poder utilizar os métodos dessa Dll em um programa em java.

vc tem o source dessa DLL, se tiver e se puder deixa eu dar uma olhada, ainda ñ tinha ouvido falar em DLL em Java

Tbm queria conhecer uma DLL feita em Java…

JNDI = Java Naming and Directory Interface
http://java.sun.com/products/jndi/

JNI = Java Native Interface
http://java.sun.com/products/jdk/1.4/docs/guide/jni/

:wink:

Provavelmente essa DLL foi feita com o falido MS J++. Certa vez li num livro sobre componentes ASP da O’Reilly que abordava a confecção de DLL’s em Java, além de VB e C++. Deve ser possível, mas nunca fiz nem vi também.

Existe DLL em java sim!
Se bem me lembro apenas registre a sua classe com regsvr32.
Depois instancie a classe java pelo asp como se fosse um componente vb normal.

Acho q é isso.

Dá pra acessar a classe também fazendo

Set objeto = GetObject("java:NomeDaClasse")

sem precisar registrar com o regsvr32.

Mas pelo que entendi ele quer acessar a DLL a partir de um código Java. :roll:

Cara, se você tem uma DLL e quer chamá-la via Java, você deve usar JNI. Independente de como ela foi criada.

Você pode fazer da seguinte forma:

Escreva uma classe “Wrapper” de acesso à sua dll, como por exemplo:

public class MyDllWrapper {
   public native int myMethod();
}

Onde myMethod representa um dos métodos disponíveis na sua DLL, de preferência com os mesmos parâmetros ou parâmetros que você possa mapear na chamada à sua Dll.

Compile a classe gerando MyDllWrapper.class.

javac MyDllWrapper.java

Compile MyDllWrapper da seguinte forma:

javah -jni MyDllWrapper

Note que não é javac, mas javah.

Será gerado um arquivo MyDllWrapper.h, que é o header de um arquivo C a implementar. Você deve implementar esse código C. Note que ele tem o seu método com algumas pequenas alterações.

Veja como fica a chamada do método no nosso exemplo:

JNIEXPORT jint JNICALL Java_MyDllWrapper_myMethod(JNIEnv *, jobject);

Para utilizar então a sua Dll no seu código Java, você utiliza agora a classe wrapper da forma como você a criou. Algo como:

...
System.loadLibrary("myDllSemExtensao"); // Nome da sua dll sem extensão
MyDllWrapper myDll = new MyDllWrapper();
int valor;
valor = myDll.myMethod();
...

A sua Dll deve estar em um caminho que não lembro agora. Mas se estiver no diretório corrente onde você executa seu código funciona com certeza. Se você usa windows, acho que no windowssystem ou windowssystem32, não lembro ao certo. Lembre de digitar o nome da Dll sem extensão.

Para não fazer desta resposta um tutorial completo, pois não tenho tempo para tal, você vai ter que olhar na documentação do JNI os mapeamentos entre tipos e parâmetros, como jint e para que serve JNIEnv. Mas é bem fácil.

:shock:

Boa sorte

Agora, para utilizar sua DLL em ASP. Embora fuja um pouco do escopo do forum GUJ;

Se a sua DLL exporta uma interface COM, então você pode usar regsvr32 para registrar sua DLL e instanciar suas interfaces COM através do ASP.

regsvr32 myDll.dll

Se a sua DLL não exporta uma interface COM, então você deve importar a DLL através dos recursos do ASP. Já faz tempo que não mexo com VB (minhas 2 certificações estão no armário já faz um tempo :wink:) .

Este é um chute de como fazer em ASP, funciona em VB desktop. Algo como:

Public Declare Function myMethod Lib "myDll" Alias "myMethod" (ByVal anyParam As String) As Long

:oops:

[quote=“net_sandro”]Agora, para utilizar sua DLL em ASP. Embora fuja um pouco do escopo do forum GUJ;
[/quote]
:?: ASP não é apenas para criar páginas Web? Ela também serve para criar DLL’s?

Em Asp você as utiliza

Estou com um problema para chamar uma DLL feita em VB. Apenas sei que ela possui um método que mando e recebo alguns parâmetros, ou seja, não conheço nada internamente dela pois estou fazendo a migração de VB para Java e preciso desta DLL. :cry:

Como ficaria a estrutura do meu código C/C++? Eu preciso chamar esta .dll no C/C++?

Todos os Exemplos que encontro de JNI, são chamadas de código C/C++.

Agradeço a ajuda, Até mais.

[quote=Augusto Cezar]Existe DLL em java sim!
Se bem me lembro apenas registre a sua classe com regsvr32.
Depois instancie a classe java pelo asp como se fosse um componente vb normal.

Acho q é isso.[/quote]

Olá. Estou começando com Java. Gostaria de acessar classes Java pelo VBA. Achei esse tópico porém não estou conseguindo registrar a(s) classe(s) com o regsvr32. Alguém conhece a sintaxe???
Desde ja agradeço.