Edgar Dantas Nóbrega
A finalidade deste blog, a princípio, é apenas a de ser um repositório de pesquisas para mim mesmo, mais que talvez ajude outros desenvolvedores.
segunda-feira, março 11, 2013
segunda-feira, fevereiro 25, 2013
quarta-feira, dezembro 05, 2012
Minicurso sobre Jogos MultiPlayer com WebSocket, Java e HTML5
Primeiro dia da apresentação (05/12/12)
quarta-feira, julho 04, 2012
Hello World Cliente remoto com EJB 3.1 e JBoss AS 7.1
- JBoss AS 7 (Download);
- JDK (Download) (Quando for criar os projetos escolha sempre JDK e não JRE)
- Eclipse, versão indigo ou superior (Eclipse Juno);
- Plugin Jboss Tools (Instala através do Eclipse MarketPlace);
Crie um novo server conforme tela abaixo, nossa aplicação servidora será implantada nele. Para isto navegue "File" > "New" > "Other" > "Server".
3 - Criando a aplicação servidora
Crie um novo projeto do tipo "EJB Project";
Na tela que se seguir desmarque a opção EJB Cliente e marque a opção gerar ejb-jar.xml , veja como fica;
4 - Adicionando um componente EJB
No menu do eclipse escolha "New" > "Session Bean". Marque as opções Local e Remote, veja como fica;
5 - Programação do componente
Crie o método sayHello na interface remota do componente e faça a sua implementação, veja como fica o código fonte;
HelloworldRemote.java
package tads.ifrn.edgar.ejbteste;
import javax.ejb.Remote;
@Remote
public interface HelloworldRemote {
public String sayHello();
}
Helloworld.java
package tads.ifrn.edgar.ejbteste;
import javax.ejb.LocalBean;
import javax.ejb.Stateless;
@Stateless
@LocalBean
public class Helloworld implements HelloworldRemote, HelloworldLocal {
public Helloworld() {
}
@Override
public String sayHello() {
return "Alo Mundo!";
}
}
6 - Execute o Helloworld como Server
7 - Aplicação Cliente
Em um ambiente real o cliente, provavelmente, será uma aplicação web, contudo, para fins de demonstração faremos uma aplicação java normal.
No menu escolha "File" > "New" > "Project" > "Java Project",
Para esta aplicação estar preparada para se comunicar com o servidor faremos as seguintes configurações;
7.1 - Adicionar uma referência ao projeto do servidor
Nas propriedades do projeto, selecione " Java Build Path ", na Aba " Projects ", clique no botão " Add ", e marque o projeto servidor, veja como fica;
7.2 - Adicionar a biblioteca cliente do JBoss
É necessário incorporar ao projeto o cliente do JBoss ( jboss-client.jar ), que se encontra na pasta de instalação em ..\bin\client\
Nas propriedades do projeto, selecione "Java Build Path", na Aba "Source", clique no botão "Add Folder" e selecione a pasta resources criada anteriormente;
7.4 - Na pasta criada anteriormente, adicionar o arquivo de configuração de conexão
É necessário criar o arquivo jboss-ejb-client.properties, que deve conter informações para permitir chamada a EJBs remotos, no mínimo as seguintes linhas;
remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false
remote.connections=default
remote.connection.default.host=localhost
remote.connection.default.port
= 4447
remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false
7.5 - Código fonte do cliente
HelloWordClient.java
import java.util.Properties;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
import tads.ifrn.edgar.ejbteste.HelloworldRemote;
public class HelloWorldClient {
public static void main(String[] args) {
final HelloworldRemote remoto = carregarStatlessBean();
System.out.println("Mostrando remoto: " + remoto.sayHello());
}
public static HelloworldRemote carregarStatlessBean() {
final Properties propriedades = new Properties();
propriedades.put(Context.URL_PKG_PREFIXES,"org.jboss.ejb.client.naming");
Context context;
try {
context = new InitialContext(propriedades);
// O padrão para o comando lookup é ejb:nome do EAR/nome do projeto servidor/nome classe do modulo!nome completo da classe remota
// Dentro da janela de console do servidor esta informação pode ser percebida, veja o que vem logo após java:jboss/exported
return (HelloworldRemote) context.lookup("ejb:HelloWorldEAR/HelloWorld/Helloworld!tads.ifrn.edgar.ejbteste.HelloworldRemote");
} catch (NamingException e1) {
e1.printStackTrace();
}
return null;
}
}
Referências:
[2] http://java.sun.com/j2ee/tutorial/1_3-fcs/doc/EJBConcepts3.html
[3] https://docs.jboss.org/author/display/AS71/EJB+invocations+from+a+remote+client+using+JNDI
segunda-feira, julho 02, 2012
Adicionar Syntax Highlighter para Blogs
- ..\styles\shCore.css
- ..\styles\shThemeDefault.css
- ..\styles\shCoreDefault.css
- ..\scripts\shCore.js
- ..\scripts\shBrushJava.js
- ..\scripts\shBrushCss.js
- ..\scripts\shBrushJScript.js
- ..\scripts\shBrushXml.js
- Adicione arquivos conforme o tipo de código deseja formatar
4 - Siga a seguinte convenção ao postar um código fonte no artigo;
<pre class="brush: java">
import java.util.Properties;
public class Testar {
public static void main(String[] args) {
System.out.println("Teste!");
}
}
</pre>
O código html acima vai gerar a seguinte formatação;
import java.util.Properties;
public class Testar {
public static void main(String[] args) {
System.out.println("Teste!");
}
}
Referências:
[1] http://pt.wikipedia.org/wiki/Realce_de_sintaxe
[2] http://www.bloggermint.com/2010/02/how-to-add-syntax-highlighter-for-bloggerblogspot/
quarta-feira, fevereiro 22, 2006
AJAX - Na prática e em Detalhes
Um dos classicos problemas de construir uma interface para uma aplicação Web é que uma vez que a pagina foi enviada para o cliente a conexão é encerrada imediatamente.
A qualquer tempo quando é necessária uma interação do usuário com a interface a requisição é enviada para o servidor que reconstroi a interface (Pagina) e envia de volta para o cliente, e dependendo da velocidade da conexão, a reconstrução de toda a pagina pode demorar bastante tornando a Aplicação Web pouco produtiva. Neste artigo abordarei uma solução que vem sendo adotada para a resolução deste problema, o uso do AJAX, que nada mais é do que a utilização conjunta de tecnologias já amplamente utilizadas: Javascript; DOM; XML, e principalmente a utilização do objeto XMLHttpRequest(), em fase de estudo e documentação pelo W3C e implementado pela maioria dos navegadores modernos.
Começaremos abordando um exemplo de aplicação bastante comum, em que se deseja fazer uma pesquisa em uma agenda.
Considere a existencia das seguintes tabelas:
| Casdastro de Orgãos | ||
| Id | Orgao | Endereco |
| 1 | INSS | Rua Castelo Branco, Centro, n. 554, Rio de Janeiro/RJ |
| 2 | IBAMA | Rua das Flores n. 300, Centro |
| 3 | ... | ... |
| Casdastro de Departamentos | |||
| Id | id_orgao | nome | fone |
| 1 | 1 | Departamento de Fiscalização | 0xx212344577 |
| 2 | 1 | Departamento Administrativo | 0xx21234578 |
| 3 | ... | ... | ... |
Em uma Aplicação tradicional você selecionaria em uma combo o orgão desejado e entao uma nova pagina será carregada e uma outra combo é preenchida com todos os depatamentos do orgão, nota-se desta forma um inconveninte, uma vez que somente um elemento da pagina será alterado, com AJAX somente a combo com os departamentos seria alterada sem a necessidade de toda a página ser carregada novamente.
Embora o AJAX possa ser implementado em outra linguagem, utilizaremos nessa abordagem o PHP, por ser a mais popular dentre as linguagens de script Server-Side. Na implementação do nosso pequeno exemplo teremos uma pagina principal chamada "agenda.php" e uma pagina que retornara os dados chamada de "pesq_depto.php" , as quais devem conter os seguintes codigos, que estão comentados para facilitar o entendimento:
Codigo fonte do script agenda.php |
Codigo fonte do script pesq_depto.php |
Como vocês podem ter observado no código assima o sistema todo é baseado em três funções em JavaScript LerDocXML(url), ProcessaResposta() e mudar_orgao(evnt, campo). Quando o usario seleciona um orgão o evento ONCHANGE da tag "select" chama a função mudar_orgao, que por sua vez forma uma url com o codigo do orgao selecionado (url = 'pesq_depto.php?orgao=' + codigo;) e chama a função LerDocXML passando como parametro a url, esta função por sua vez cria um objeto "requisicao" a partir da classe XMLHttpRequest, que entao define a função (requisicao.onreadystatechange = ProcessaResposta;) que tratara a resposta da pagina "pesq_depto.php" aberta pelo metodo open(). Quando o servidor retornar os dados a função ProcessaResposta é chamada e então preenche os demais campos do formulario dinamicamente.
O objetivo deste Post era mostrar na prática e em detalhes como é uma implementação de AJAX e espero ter conseguido.








