Marcos,
Segue correcao sobre o que eu
disse no e-mail anterior (a ideia estava mais ou menos certa, mas hoje eu dei
uma olhada aqui no meu codigo e vi que a implementacao eh
diferente).
Voce escreve uma CLASSE Java (e
nao uma Interface, como eu havia dito) que declara os seus "native methods".
Alem dos native methods voce tambem declara um que ira carregar o DLL (no meu
caso eu chamei de initLibrary(). Ai voce usa o tal "javah" para gerar o ".h" com
os metodos nativos que sao implementados pela DLL.
Para chamar os metodos de um
programa Java voce antes cria uma "instance" da classe, chama o tal metodo nao
nativo (que eu chamei "initLibrary()") e pronto. A partir dai eh soh
acessar os metodos. Voce vai descobrir alguns problemas com gerenciamento
de memoria mas que dah para evitar. O principal talvez seja criar o initLibrary
como static ou algo do genero, no caso de voce querer que apenas uma
"instance" da sua DLL seja carregada.(Eh uma pena que nao exite um
System.releaseLibrary() ou algo do genero...).
NativeMethods nm = new NativeMethods();
nm.initLibrary( "Nome da DLL"); Segue abaixo exemplo da classe.
Abracos,
Marcelo Quintella
public class
NativeMethods
{ //--------------------------------------------------------------------- // Constants //--------------------------------------------------------------------- // error
codes
public static final byte ERR_NONE = 0x00; public static final byte ERR_EXCEPTION_SECURITY = 0x01; public static final byte ERR_EXCEPTION_UNSATISFIED_LINK = 0x02; public static final byte ERR_EXCEPTION_OTHER = 0x03;
//---------------------------------------------------------------------
// Native Methods //--------------------------------------------------------------------- /**
* Clears handle's line list */ public native void clear( long handle ); /**
* Returns the next line in handle's line list */ public native String getNext( long handle ); //---------------------------------------------------------------------
// Other Methods //--------------------------------------------------------------------- /**
* Loads the DLL */ public byte initLibrary( String dllname
)
{ try { System.loadLibrary( dllname ); return ERR_NONE; } catch ( SecurityException burf ) { return ERR_EXCEPTION_SECURITY; } catch ( UnsatisfiedLinkError burf ) { return ERR_EXCEPTION_UNSATISFIED_LINK; } catch ( Exception burf ) { return ERR_EXCEPTION_OTHER; } } --- Marcelo Quintella <[EMAIL PROTECTED]> wrote: > Marcos, > > Eu nao saco muito de COM+ nao, mas eu escrevi recentemente um DLL em > C++ para ser acessado por um servlet em Java. Eu nem lembro direito, > mas o que eh necessario fazer eh criar uma interface que declare > metodos nativos, tipo > > public native void meuMetodo() > > Ai depois de compilado e criado o .class voce usa o "javah" que vem > com o JDK e ele cria um "header file" .h. Entao a sua DLL tem que > implementar esse .h e a classe Java implementa a interface java e um > pode falar com o outro. > > O livro do Bruce Eckel (Thinking in Java) tem uma "receita de bolo" > de como fazer isso (ou seja, nao entra em detalhes, mas te mostra o > caminho das pedras). Vai em www.bruceeckel.com que tem uma versao on > line do livro. > > Espero que tenha ajudado. Se precisar posso catar aqui o codigo do > meu DLL e fazer um exemplo (de cabeca eu nao lembro como fazer). > > Abracos, > Marcelo Quintella > > > >From: Marcos Eduardo Brienze <[EMAIL PROTECTED]> > > >Reply-To: [EMAIL PROTECTED] > > >To: "Lista SouJava (E-mail)" <[EMAIL PROTECTED]> > > >Subject: [java-list] Objetos COM+ e Java > > >Date: Fri, 24 Nov 2000 21:35:25 -0300 > > > > > >Olá, > > > > > >Alguém sabe como um objeto COM+ pode acessar um objeto Java ? > > > > > >Atenciosamente, > > > > > >----------- > > >Marcos Eduardo <[EMAIL PROTECTED]> > > > |
- [java-list] Objetos COM+ e Java Marcos Eduardo Brienze
- Re: [java-list] Objetos COM+ e Java Alexei Znamensky
- Re: [java-list] Objetos COM+ e Java Sergio Oliveira Jr.
- Re: [java-list] Objetos COM+ e Java Marcos Yonamine
- Re: [java-list] Objetos COM+ e Java Marcelo Quintella
- [java-list] Objetos COM+ e Java Marcelo Quintella
- [java-list] Objetos COM+ e Java Paulo Henrique da Fonseca Rebelo