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]>
>
>
>
 

Responder a