O pattern usado pra protocolos  XML
Índice dos Fóruns » Java Avançado
Autor Mensagem
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

Tanto a API do javamail como a do jsse e http usam um pattern q eu nao faco ideia do nome e nem de como eles fazem isso, queria saber se alguem sabe como eles fazem isso.

Basicamente voce fala assim:


Substituindo a variavel pelo protocolo desejado. No caso do jsse e http eh na hora q cria uma conexao a partir de um objeto java.net.URL.
Entaum, minha duvida eh, como ele faz para achar as implementacoes do protocolo uma vez que as classes que implementam o protocolo estao em packages nada a ver com o da classe Transport (por exemplo). Como ele faz pra descobrir que esse protocolo esta disponivel?
Pra ver se eh disponivel eh soh achar as classes que implementam uma Interface de protocolo e pegar um metodo getProtocolName() ou qq coisa do genero.
Mas como descobrir quem implementa esta interface?

Se nao me engano o JDBC tambem usa um pattern meio assim, no caso dele voce pode ou registrar a classe que pode ser usada com o DriverManager ou NAO.
Naoe ntendo direito,

Abraco

Gui

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

vou falar como funciona o JDBC, porque esse eu conheco

O DriverManager tem o seguinte metodo:



E quem chama ele, é o driver, enquanto voce inicializa ele:



Quando você faz isso, ele executa o inicializador estático da classe, que por sua vez se registra no DriverManager, avisando que ele é um candidato a driver
Aí, dentro do:



Ele vai de um em um driver, perguntar qual que aceita a string de conexao "x". Quando achar, pega uma Connection com ele, se nao achar, excecao.

O funcionamento do javamail deve ser um pouco diferente, telvez ele tenha os nomes das interfaces hardcodado. Precisa ver no source.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

Paulo Silveira wrote:O funcionamento do javamail deve ser um pouco diferente, telvez ele tenha os nomes das interfaces hardcodado. Precisa ver no source.

o jdbc eu tinha pensado que era assim mesmo
sobre o javamail, ele nao registra a classe
e a interface num precisa ta hardcodada mas de algum jeito ele tem q achar as classes q implementam essas interfaces, e como sem registrar?
com o https vc tem q indicar (system property) qual o pacote q vc vai usar pra tomar conta do protocolo...

gui

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
crolmos
What is classpath?

Membro desde: 21/08/2002 10:15:55
Mensagens: 5
Localização: São Paulo
Offline

Na verdade vc não pode criar um Transport desse jeito, vc tem que pedir para o Session criar o Transport



A configuração de qual protocolo será carregado ao se ler a string "SMTP" está no arquivo javamail.default.provider que está dentro do mail.jar, e que tem linhas do tipo



e assim o session sabe qual tipo de transport usar...
[WWW] [ICQ]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

crolmos wrote:e assim o session sabe qual tipo de transport usar...

brigadao crolmos, isso resolve o misterio de todos os factories desse tipo que conheco.... todos eles tem marcado de uma maneira ou de outra qal a classe que ele deve usar.....

dentre todas essas, a de registrar misturada com a pre-definida sao com certeza a melhor solucao, que, se nao me engano, eh a do https...

guilherme

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
Paulo Silveira
Administrador
[Avatar]

Membro desde: 07/08/2002 18:38:50
Mensagens: 4204
Localização: São Paulo
Offline

O guilherme me perguntou em particular quem era o "tiozao" crolmos.
Ele nao eh tiozao nao.

Ele eh o Cesar da faculdade. Se forma agora tambem, e acho que entre nos, eh ele e o Krico que tem mais experiencia em java contado por tempo.

Talvez isso possa fazer dele um Tiozao. Nao sei.

http://blog.caelum.com.br twitter: @paulo_caelum


[Email] [WWW]
crolmos
What is classpath?

Membro desde: 21/08/2002 10:15:55
Mensagens: 5
Localização: São Paulo
Offline

Paulo Silveira wrote:O guilherme me perguntou em particular quem era o "tiozao" crolmos.
Ele nao eh tiozao nao.

Eu esqueci de me apresentar, acho que vou colocar uma foto do lado como o peas

Assim ninguem vai me chamar mais de "tiozao"
[WWW] [ICQ]
Guilherme Silveira
Administrador

Membro desde: 14/08/2002 10:09:26
Mensagens: 1096
Localização: Sao Paulo
Offline

paulo, nao sabe as regras de etiqueta? se a gente fala tiozao num email eh pq eh privado
agora me queimei total e vou poder estrear essas carinhas estranhas q tem aqui no forum olha q chique?

bom tioz, oops, quero dizer, cesar, valeu pela ajuda
ps: arquivo sem ser class no .jar eu acho tao feio........... (esteticamente)

gui

-------------------------------------------------------
Guilherme Silveirahttp://blog.caelum.com.br
[Email] [WWW] [MSN]
 
Índice dos Fóruns » Java Avançado
Ir para:   
Powered by JForum 2.1.8 © JForum Team