MANIFEST.MF funciona no WAR ????

View: New views
7 Messages — Rating Filter:   Alert me  

MANIFEST.MF funciona no WAR ????

by fabricio epaminondas :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Olá pessoal, estou desenvolvendo uma App. Web que necessita fazer call de outras JVM's. Então estou tentando 'reaproveitar' o classpath da jvm atual ao invocar a outra.
   Ao pegar o classpath (java.class.path) do meu contexto WEB vi que nenhuma das libs ou classes estão realmente no meu classpath, apenas o jar  "bootstrap.jar", pois o tomcat acha minhas classes através de um classLoader customizado da apache, não precisando que estejam no classpath.

Porém eu preciso dos caminhos relativos para  os jar,  então tentei colocar as referências no Manifest.MF e vi também que está sendo 'ignorado' o classpath que lá informo.

Existe alguma solução que não me obriga a fazer um forzão adicionando os jars dinamicamente no CLASSPATH??? 



--
Fabrício Silva Epaminondas

Student at Federal University of Campina Grande (Brazil) - UFCG
Systems and Computing Department

http://fabricioepa.googlepages.com/home

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by Maurício Linhares-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Já tentou pegar o caminho dos jars dentro da pasta web-inf/lib?

2008/7/17 fabricio epaminondas <fabricioepa@...>:

> Olá pessoal, estou desenvolvendo uma App. Web que necessita fazer call de
> outras JVM's. Então estou tentando 'reaproveitar' o classpath da jvm atual
> ao invocar a outra.
>    Ao pegar o classpath (java.class.path) do meu contexto WEB vi que nenhuma
> das libs ou classes estão realmente no meu classpath, apenas o jar
> "bootstrap.jar", pois o tomcat acha minhas classes através de um classLoader
> customizado da apache, não precisando que estejam no classpath.
>
> Porém eu preciso dos caminhos relativos para  os jar,  então tentei colocar
> as referências no Manifest.MF e vi também que está sendo 'ignorado' o
> classpath que lá informo.
>
> Existe alguma solução que não me obriga a fazer um forzão adicionando os
> jars dinamicamente no CLASSPATH???
>
>
>
> --
> Fabrício Silva Epaminondas
>
> Student at Federal University of Campina Grande (Brazil) - UFCG
> Systems and Computing Department
>
> http://fabricioepa.googlepages.com/home
> >
>



--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by fabricio epaminondas :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Olá Maurício, está é minha "solução imediatista", porém eu preciso do classpath (libs + classes) de forma mais "padronizada" digamos assim.

 Pegar os libs e os classes funcionará de forma diferente no OC4j, Tomcat, Jboss, etc... isso pq o default location do ClassLoader das classes do WAR muda de acordo com a implementação de cada servidor. no tomcat por exemplo se eu pegar o default location, encontro a raiz do projeto (web-inf/classes) então é so subir um diretorio e achar os libs. Já no oc4j ele está no "C:/casa da mão joana/"

Gostaria de fazer funcionar o propósito do MANIFEST.MF, é possível ?



2008/7/17 Maurício Linhares <mauricio.linhares@...>:

Já tentou pegar o caminho dos jars dentro da pasta web-inf/lib?

2008/7/17 fabricio epaminondas <fabricioepa@...>:
> Olá pessoal, estou desenvolvendo uma App. Web que necessita fazer call de
> outras JVM's. Então estou tentando 'reaproveitar' o classpath da jvm atual
> ao invocar a outra.
>    Ao pegar o classpath (java.class.path) do meu contexto WEB vi que nenhuma
> das libs ou classes estão realmente no meu classpath, apenas o jar
> "bootstrap.jar", pois o tomcat acha minhas classes através de um classLoader
> customizado da apache, não precisando que estejam no classpath.
>
> Porém eu preciso dos caminhos relativos para  os jar,  então tentei colocar
> as referências no Manifest.MF e vi também que está sendo 'ignorado' o
> classpath que lá informo.
>
> Existe alguma solução que não me obriga a fazer um forzão adicionando os
> jars dinamicamente no CLASSPATH???
>
>
>
> --
> Fabrício Silva Epaminondas
>
> Student at Federal University of Campina Grande (Brazil) - UFCG
> Systems and Computing Department
>
> http://fabricioepa.googlepages.com/home
> >
>



--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208





--
Fabrício Silva Epaminondas

Student at Federal University of Campina Grande (Brazil) - UFCG
Systems and Computing Department

http://fabricioepa.googlepages.com/home

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by Maurício Linhares-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Fabrício,

O caminho pra o web-inf/lib e o web-inf/classes é sempre o mesmo de
dentro da aplicação web, seja qual for o container que você estiver
usando, é só fazer um getRealPath("/WEB-INF/lib") que você vai sempre
pegar o lugar correto, independente do servidor de aplicações que você
estiver usando.

2008/7/17 fabricio epaminondas <fabricioepa@...>:

>
> Olá Maurício, está é minha "solução imediatista", porém eu preciso do
> classpath (libs + classes) de forma mais "padronizada" digamos assim.
>
>  Pegar os libs e os classes funcionará de forma diferente no OC4j, Tomcat,
> Jboss, etc... isso pq o default location do ClassLoader das classes do WAR
> muda de acordo com a implementação de cada servidor. no tomcat por exemplo
> se eu pegar o default location, encontro a raiz do projeto (web-inf/classes)
> então é so subir um diretorio e achar os libs. Já no oc4j ele está no
> "C:/casa da mão joana/"
>
> Gostaria de fazer funcionar o propósito do MANIFEST.MF, é possível ?
>


--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by fabricio epaminondas :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Mauricio,vlw a dica, sei que apesar de ser sempre o mesmo o padrão estrutural dentro dum war, para pegar este diretório via getRealPath(""), teria que executar a chamada num servlet, pegar o diretório e "montar" um classpath, ou seja continuo processando eu mesmo o classpath.

 No caso o call de JVM está bem abaixo da camada WEB e eu teria que passar isso como paramêtro para ela, ou como falei antes usar o "Default Location" que é onde ocorre a diferença conforme o Servidor usado, mas se não tiver outra forma solução será o jeito.

  Quero evitar o trabalho sujo de montar o classpath na mão "dentro" do código do sistema. Ainda to pesuiqsando o pq no manifest.mf não funciona.




2008/7/17 Maurício Linhares <mauricio.linhares@...>:

Fabrício,

O caminho pra o web-inf/lib e o web-inf/classes é sempre o mesmo de
dentro da aplicação web, seja qual for o container que você estiver
usando, é só fazer um getRealPath("/WEB-INF/lib") que você vai sempre
pegar o lugar correto, independente do servidor de aplicações que você
estiver usando.

2008/7/17 fabricio epaminondas <fabricioepa@...>:
>
> Olá Maurício, está é minha "solução imediatista", porém eu preciso do
> classpath (libs + classes) de forma mais "padronizada" digamos assim.
>
>  Pegar os libs e os classes funcionará de forma diferente no OC4j, Tomcat,
> Jboss, etc... isso pq o default location do ClassLoader das classes do WAR
> muda de acordo com a implementação de cada servidor. no tomcat por exemplo
> se eu pegar o default location, encontro a raiz do projeto (web-inf/classes)
> então é so subir um diretorio e achar os libs. Já no oc4j ele está no
> "C:/casa da mão joana/"
>
> Gostaria de fazer funcionar o propósito do MANIFEST.MF, é possível ?
>


--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208





--
Fabrício Silva Epaminondas

Student at Federal University of Campina Grande (Brazil) - UFCG
Systems and Computing Department

http://fabricioepa.googlepages.com/home

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by Maurício Linhares-3 :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message


Eu ainda não tô entendendo direito o seu problema, mas tem mais um
complicador aí, quando um servidor de aplicação desempacota um war ele
coloca ele em um caminho "temporário", quando essa aplicação for
reiniciada ou o war for atualizado dos os arquivos são apagados e
gerados denovo, não necessariamente no mesmo lugar e se a sua
aplicação "de fora" estiver usando alguma coisa da aplicação web
diretamente ela pode quebrar tudo pro servidor de aplicação.

O ideal é que essa sua aplicação desktop seja autocontida e não
dependa em nada de uma aplicação web.

2008/7/17 fabricio epaminondas <fabricioepa@...>:

> Mauricio,vlw a dica, sei que apesar de ser sempre o mesmo o padrão
> estrutural dentro dum war, para pegar este diretório via getRealPath(""),
> teria que executar a chamada num servlet, pegar o diretório e "montar" um
> classpath, ou seja continuo processando eu mesmo o classpath.
>
>  No caso o call de JVM está bem abaixo da camada WEB e eu teria que passar
> isso como paramêtro para ela, ou como falei antes usar o "Default Location"
> que é onde ocorre a diferença conforme o Servidor usado, mas se não tiver
> outra forma solução será o jeito.
>
>   Quero evitar o trabalho sujo de montar o classpath na mão "dentro" do
> código do sistema. Ainda to pesuiqsando o pq no manifest.mf não funciona.
>
>
>
>
> 2008/7/17 Maurício Linhares <mauricio.linhares@...>:
>>
>> Fabrício,
>>
>> O caminho pra o web-inf/lib e o web-inf/classes é sempre o mesmo de
>> dentro da aplicação web, seja qual for o container que você estiver
>> usando, é só fazer um getRealPath("/WEB-INF/lib") que você vai sempre
>> pegar o lugar correto, independente do servidor de aplicações que você
>> estiver usando.
>>
>> 2008/7/17 fabricio epaminondas <fabricioepa@...>:
>> >
>> > Olá Maurício, está é minha "solução imediatista", porém eu preciso do
>> > classpath (libs + classes) de forma mais "padronizada" digamos assim.
>> >
>> >  Pegar os libs e os classes funcionará de forma diferente no OC4j,
>> > Tomcat,
>> > Jboss, etc... isso pq o default location do ClassLoader das classes do
>> > WAR
>> > muda de acordo com a implementação de cada servidor. no tomcat por
>> > exemplo
>> > se eu pegar o default location, encontro a raiz do projeto
>> > (web-inf/classes)
>> > então é so subir um diretorio e achar os libs. Já no oc4j ele está no
>> > "C:/casa da mão joana/"
>> >
>> > Gostaria de fazer funcionar o propósito do MANIFEST.MF, é possível ?
>> >
>>
>>
>> --
>> Maurício Linhares
>> http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
>> João Pessoa, PB, +55 83 8867-7208
>>
>>
>
>
>
> --
> Fabrício Silva Epaminondas
>
> Student at Federal University of Campina Grande (Brazil) - UFCG
> Systems and Computing Department
>
> http://fabricioepa.googlepages.com/home
> >
>



--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---


Re: MANIFEST.MF funciona no WAR ????

by fabricio epaminondas :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

CErto, explicando resumidamente o cenário, não é uma app desktop q depende das libs web, é apenas uma aap Web que precisa rodar uma única Main class para processar um determinado arquivo numa VM separada, a gosso modo seria:

  WebApp - > Runtime.exec(" Call another Local VM -cp classpath -a arquivo MainClass")

A MainClass class salva no arquivo certos dados que serão recuperados futuramente pela app web. Está descrição é apenas ilustrativa, mas existe um propósito mais concreto chamar esta única MainClass separadamente. Como vê, provavelmente terei que passar  um classpath para chamda da MainClass, que usa basicamente o mesmo classpath da app web.

As possibilidades que vejo
1 - Ou faço um arquivo externo com classpath para ser recuperado e passado nessa chamda. Já que classpath não é uma coisa legal de ser ter dentro do código.

2 - Ou de alguma forma utilizo o classpath corrente (System.getPropery("java.class.path")) como parametro, o que funcionou utilizando testes de unidade. Porém não funciona com o dado classpath do JEE WebContainer, nem mesmo com CLASSPATH setado no manifest




2008/7/17 Maurício Linhares <mauricio.linhares@...>:

Eu ainda não tô entendendo direito o seu problema, mas tem mais um
complicador aí, quando um servidor de aplicação desempacota um war ele
coloca ele em um caminho "temporário", quando essa aplicação for
reiniciada ou o war for atualizado dos os arquivos são apagados e
gerados denovo, não necessariamente no mesmo lugar e se a sua
aplicação "de fora" estiver usando alguma coisa da aplicação web
diretamente ela pode quebrar tudo pro servidor de aplicação.

O ideal é que essa sua aplicação desktop seja autocontida e não
dependa em nada de uma aplicação web.

2008/7/17 fabricio epaminondas <fabricioepa@...>:
> Mauricio,vlw a dica, sei que apesar de ser sempre o mesmo o padrão
> estrutural dentro dum war, para pegar este diretório via getRealPath(""),
> teria que executar a chamada num servlet, pegar o diretório e "montar" um
> classpath, ou seja continuo processando eu mesmo o classpath.
>
>  No caso o call de JVM está bem abaixo da camada WEB e eu teria que passar
> isso como paramêtro para ela, ou como falei antes usar o "Default Location"
> que é onde ocorre a diferença conforme o Servidor usado, mas se não tiver
> outra forma solução será o jeito.
>
>   Quero evitar o trabalho sujo de montar o classpath na mão "dentro" do
> código do sistema. Ainda to pesuiqsando o pq no manifest.mf não funciona.
>
>
>
>
> 2008/7/17 Maurício Linhares <mauricio.linhares@...>:
>>
>> Fabrício,
>>
>> O caminho pra o web-inf/lib e o web-inf/classes é sempre o mesmo de
>> dentro da aplicação web, seja qual for o container que você estiver
>> usando, é só fazer um getRealPath("/WEB-INF/lib") que você vai sempre
>> pegar o lugar correto, independente do servidor de aplicações que você
>> estiver usando.
>>
>> 2008/7/17 fabricio epaminondas <fabricioepa@...>:
>> >
>> > Olá Maurício, está é minha "solução imediatista", porém eu preciso do
>> > classpath (libs + classes) de forma mais "padronizada" digamos assim.
>> >
>> >  Pegar os libs e os classes funcionará de forma diferente no OC4j,
>> > Tomcat,
>> > Jboss, etc... isso pq o default location do ClassLoader das classes do
>> > WAR
>> > muda de acordo com a implementação de cada servidor. no tomcat por
>> > exemplo
>> > se eu pegar o default location, encontro a raiz do projeto
>> > (web-inf/classes)
>> > então é so subir um diretorio e achar os libs. Já no oc4j ele está no
>> > "C:/casa da mão joana/"
>> >
>> > Gostaria de fazer funcionar o propósito do MANIFEST.MF, é possível ?
>> >
>>
>>
>> --
>> Maurício Linhares
>> http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
>> João Pessoa, PB, +55 83 8867-7208
>>
>>
>
>
>
> --
> Fabrício Silva Epaminondas
>
> Student at Federal University of Campina Grande (Brazil) - UFCG
> Systems and Computing Department
>
> http://fabricioepa.googlepages.com/home
> >
>



--
Maurício Linhares
http://alinhavado.wordpress.com/ (pt-br) | http://blog.codevader.com/ (en)
João Pessoa, PB, +55 83 8867-7208





--
Fabrício Silva Epaminondas

Student at Federal University of Campina Grande (Brazil) - UFCG
Systems and Computing Department

http://fabricioepa.googlepages.com/home

--~--~---------~--~----~------------~-------~--~----~
=================================================================
Site: http://pbjug.org/
Grupo: http://groups.google.com/group/pbjug
-
Para cancelar a sua inscrição neste grupo, envie um e-mail para pbjug-unsubscribe@...
=================================================================
-~----------~----~----~----~------~----~------~--~---

LightInTheBox - Buy quality products at wholesale price!