Um Manifesto!

...

  • Increase font size
  • Default font size
  • Decrease font size

Blog

Tutorial Instalando o JBOSS no Linux

E-mail Print PDF

Instalando o JBOSS No Linux. 

As versões usadas aqui foram escolhidas propositadamente mesmo havendo versão mais recente, que não funcionaram comigo. Em especial o jdk60 e o ejb3 no jboss tem uma serie de problemas com acesso remotos. Usemos a versão JDk50.

O processo consiste em, instalar o Jboss através do JEMS, instalar o patch para EJB3 e é isso ai!

Vou instala-lo na pasta /opt/jboss, o servidor deve ser iniciado como root. Com a pasta /opt/jboss devidamente criada, baixa-se o JEMS installer, versão 1.2.0.GA, eis o link:

http://labs.jboss.com/jemsinstaller/downloads/

Terminado, execute, como root :

# java -jar jems*.jar

Siga os passos na interface que vai surgir, escolha a pasta a ser instalada (no meu caso /opt/jboss) e escolha a opção ejb3 quando for perguntado, informe e se lembre de seu password e vai clicando next até chegar no done.

Abra um terminal e vai até a pasta que instalou seu jboss:

# cd /opt/jboss

# cd bin

# ./run.sh

Virá um monte de coisas, mas se você chegar até uma mensagem semelhante a seguinte, tudo esta ok!

16:55:31,091 INFO [Server] JBoss (MX MicroKernel) [4.0.5.GA (build: CVSTag=Branch_4_0 date=200610162339)] Started in 1m:8s:606ms

Pressione ctrl+c para encerrar o Jboss e espere ele terminar. Vamos agora integrar o EJB3, baixe o JBoss EJB 3.0 Preview RC9 de:

http://labs.jboss.com/jbossejb3/downloads/

O desconpacte, e vamos a sequencia de copias, deletes e etcs, defina o $JBOSS_HOME para a pasta do jboss, com:

# JBOSS_HOME=/opt/jboss

# export $JBOSS_HOME

e depois:

rm $JBOSS_HOME/server/default/deploy/jbossws14.sar

rm $JBOSS_HOME/server/default/deploy/jboss-aop.deployer -Rf

rm $JBOSS_HOME/server/default/deploy/jboss-aop-jdk50.deployer -Rf

rm $JBOSS_HOME/server/default/deploy/ejb3.deployer -Rf

rm $JBOSS_HOME/client/jbossws14-client.jar
 

cp lib/jbossws-client.jar $JBOSS_HOME/client

cp lib/hibernate-client.jar $JBOSS_HOME/client

cp lib/jboss-ejb3-client.jar $JBOSS_HOME/client

cp lib/ejb3-persistence.jar $JBOSS_HOME/client

cp lib/ejb3-persistence.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate-entitymanager.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate-annotations.jar $JBOSS_HOME/server/default/lib

cp lib/hibernate3.jar $JBOSS_HOME/server/default/lib

cp lib/javassist.jar $JBOSS_HOME/server/default/lib

cp lib/quartz-all-1.5.2.jar $JBOSS_HOME/server/default/lib

cp lib/ejb3.deployer $JBOSS_HOME/server/default/deploy -Rf

cp lib/*.xml $JBOSS_HOME/server/default/deploy -Rf

cp lib/jbossws.sar $JBOSS_HOME/server/default/deploy -Rf

cp lib/jboss-aop-jdk50.deployer $JBOSS_HOME/server/default/deploy -Rf

cp lib/jms-ra.rar $JBOSS_HOME/server/default/deploy/jms

cp lib/quartz-ra.rar $JBOSS_HOME/server/default/deploy

Agora é um pouco mais complicado, precisa abrir alguns jars e modificar alguns arquivos dentro desses jars, eu fiz isso graficamente usando o file-roller, mas pode ser o ark ou outro, basta abrir cada pacote, ir a pasta de destino e arrastar o arquivo novo para substituir o antigo e depois fechar o pacote, muito cuidado ao reenpacotar “na mão”. Eis as alterações, as classes estão na pasta “classes”:

jar: $JBOSS_HOME/server/default/lib/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/client/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/client/jbossall-client.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/server/default/lib/jboss-j2ee.jar

alteração: javax/ejb/SessionContext.class

jar: $JBOSS_HOME/server/default/lib/jboss.jar

alteração: org/jboss/ejb/*.class

E também é necessário um arquivo extra, apenas para as aplicações clientes, deve obter os arquivos, jboss-aop-jdk50-client.jar e jboss-aspect-jdk50-client.jar , pelo download de um dos pacotes disponíveis no site do jboss.org :

http://labs.jboss.com/jbossaop/downloads/

E copie os arquivos citados para a pasta client no diretório do Jboss.

Pronto! Rode o jboss de novo para ver se tudo funciona, e se não funcionar, ai complica e começa tudo de novo. Foi “apenas” isso tudo que tive de fazer para funcionar.

O diretório para publicar as aplicações é em $JBOSS_HOME/server/default.

As aplicações clientes que forem acessar os serviços do jboss necessitam ter o seguintes arquivos em seu classpath, todos disponíveis na pasta $JBOSS_HOME/client :

jbossall-client.jar

jboss-ejb3-client.jar

jboss-aop-jdk50-client.jar

jboss-aspect-jdk50-client.jar

Dúvidas os comentários estão abertos.

 

Workstation 2 JAVA

E-mail Print PDF
Tutorial - Instalando o JAVA no Linux Debian Etch 

Apesar de existir versão mais recente 6 do java, escolhi pela 5 porque a 6.0 tem problemas ao usar os EJB3 do Jboss. Faça o download do site da sun na versão 5 do java SDK.

Existem duas maneira de instalar o java a partir deste binario, a maneira do debian (debian way) ou tradicional. Vamos a maneira do Debian:

Instale o pacote java-package dos repositórios oficiais, com root:

# apt-get install java-package

O java-package serve para converter um pacote instalador java para deb, e assim estar mais integrado ao sistema, mas por motivos de segurança, este não pode ser usado como root. Como usuário normal, use:

$ jpkg jdk-*bin

ou

$ fakeroot jpkg jdk*.bin

Isso irá gerar um pacote .deb, agora basta instala-lo como root:

# dpkg -i jdk-*.deb

Agora usamos um utilitário debian para usar o java que acabamos de instalar como principal, rode o seguinte comando e escolha o java que acabamos de instalar:

# update-alternatives --config java

Aqui termina o “debian way”. Pronto esta instalado corretamente, vamos configurar algumas variáveis de ambiente e links para ficar tudo redondo. Como root crie um link de /usr/lib/j2sdk1.5-sun (verifique se esta pasta mesmo) para /usr/java:

# ln -s /usr/lib/j2sdk1.5-sun /usr/java

Como root, edite o arquivo /etc/profile , e adicione essas linhas no final:

JAVA_HOME=/usr/java

export JAVA_HOME

PATH=$PATH:$JAVA_HOME/bin

export PATH

E para terminar de configurar o java, edite o seu arquivo .bashrc e adicione no final a seguinte linha para terminar. E pronto.

source /ect/profile

Com isso em breve estarei postante como instalar o JBoss para servir o tomcat e aplicações j2ee com ejb3.

 

Acelerando ainda mais boot com o TexasFlood

E-mail Print PDF

Já falei uma vez sobre o TexasFlood e como ele acelera bem seu tempo de boot.

Outro dia, navegando por ai, vi que houve uma atualização na versão "generic"(para outras distros) dele.

A mudança foi grande, principalmente em informação. No Site a documentação explica bem como funciona e como lidar com o sistema, além do Fórum, onde você consegue suporte. Agora ele cuida ele mesmo do carregamento de processos, no lugar do INIT do SYSVINIT, de forma inteligente, de acordo com o estágio e a importância do processo,e mesmo pós-boot pode-se obter uma melhora de performance.

Bom, testado e aprovadíssimo no Debian Etch! Bastou descompactar e rodar o ./setup (como root obvio) e ele reconhece o seu sistema, cria os backups necessários e instala o texasflood muito rápido!  Novamente funcionou perfeitamente no meu notebook , acer 5050, e no desktop , um P4, de primeira e sem reclamar de nada.

Quero apenas ressaltar que a leitura da documentação completa do site , e de todo o arquivo /etc/texasfloot.conf , incluindo os comentários, é muito importante para assegurar o bom funcionamento do sistema. O INIT é algo crítico, e deve-se ter cuidado ao lidar com ele. Existe também agora o /etc/texasflood.list aonde você configura as prioridades dos serviços, sendo as mais baixas mais prioritárias, para assegurar performance em serviços críticos.

Grande mudança também, agora dá para desinstalar o texasflood facilmente:
# texasfloot-remove

E ele esta fora, e tudo de volta! Mas eu prefiro ficar com o texasflood.

Explicando um pouco mais , mas ainda assim resumindo. O texasflood é responsável pelo carregamento de serviços e balanceamento de cargas. Isso quer dizer que ele identifica de forma inteligente os serviços mais importantes, e assegura a prioridade destes(Configurável).

O carregamento de serviços é então dividido em 3 estágios. É no terceiro estágio que devem ser atribuídos serviços, e esta versão do Texas Flood não elimina mais serviços do INIT, o desempenho é com todos os serviços atribuídos no estagio 3, la que você deve atribuir serviços importante, como de servidor. Quando se atribui serviços no estagio 3 não há perda nenhuma de desempenho.

Mas alguns serviços precisam ser obrigatoriamente ser atribuídos no estagio 1, é nele que você atribui serviços q não são tão necessários(no 1) ...

LEMBRO QUE ESTA É A VERSÃO ALPHA ,PARA TESTE , NÃO TESTE EM SEU PC DE USO CRÍTICO CASO NÃO TENHA UM CONHECIMENTO RAZOAVEL DE LINUX.

Referências:

http://resulinux.forumdebian.com.br/texasfloodweb/index_pt_BR.html
http://linuxhard.org/?page_id=3

Parabéns ao Luciano Andress Martini, e a equipe do Resulinux, distro original no TexasFlood.

 

Workstation 1 Linux Apache PHP Mysql PostgreSQL ou LAMPP

E-mail Print PDF
Eu criei um monstro!

Apache PHP JAVA TOMCAT MYSQL POSTGRESQL SSL ...

Muitos nomes, pois bem assim esta minha maquina hoje, e tende a crescer. Um pequeno monstro! Devido aos meus estudos e sede de coisas novas, mas também pela produtividade no trabalho e por esta fazendo um curso sobre JAVA aplicações distribuídas, na infnet .

Como fiz isso tudo e possa ser necessário fazer de novo ou alguém pode, como eu estava até ainda agora, precisar deste conteúdo, post novo de how-to! Eba.

O que vamos fazer, descrição:

Instalar o servidor Apache, com os módulos para PHP e o Tomcat, jsp e servlets, e faze-los funcionar em paralelo, com direito a OpenSSL para certificados digitais. Instalar e configurar os bancos de dados MySql e PostgreSQL. Isso no Debian 4 etch, mas deve funcionar nos baseados no debian qualquer versão, incluído o ubuntu, o kurumin, mas isso eu não confirmo(se alguém me confirmar eu agradeço muito!).

A primeira parte é bem fácil, instalando e configurando o Apache com php5 e algumas bibliotecas para o mesmo:

# apt-get install apache2 php5 apache2-mod-php5 php5-gd php5-mcrypt

Isso irá instalar, na ordem, o apache2, o php5, o modulo para o apache comunicar com o php5, gd(biblioteca gráfica) para o php, e uma biblioteca de encriptação também. Tem muitas outras, mais por hora apenas essas.

Para rodar o apache basta executar o comando, já com php ativado:

# apache2

Para parar use "apache2ctl stop" e reiniciar "apache2ctl restart". O Diretório padrão é /var/www , lá você pode colocar seus sites ou, melhor na minha opinião, linkar sua pasta padrão, eu fiz assim:

# ln -s /home/diogo/worspace /var/www

Assim sempre que quiser acessar um projeto eu abro o navegador e entro com: "localhost/projeto".

Os arquivos de configurações ficam em /etc/apache2 , são os arquivos fragmentados. Os módulos ativos ficam em mods-eneabled.

Agora os bancos de dados, mysql primeiro:

# apt-get install mysql-server-5.0 mysql-cliente-5.0 mysql-admin php5-mysql

Instala, na ordem, o servidor mysql em si, um cliente para acesso via terminal e um cliente gráfico. Por ultimo o modulo para o PHP. Para ver os efeitos, tem que reiniciar o apache, e executar o mysqld (MySql Daemon, para o servidor ficar rodando). Você pode usar o mysql-admin (haverá uma entrada no menu) ou o mysql via terminal. Via terminal, como usuario normal:

$ mysql -l localhost -D database -u usuario -p

ou , para passar um arquivo com instruções sql:

$ mysql -l localhost -D database -u usuario -p < arquivo.sql

Assim vai pedir a senha do usuario cadastrado. A sintaxe básica para criar a primeira base de dados e usuario no mysql é assim, como root: # mysql

mysql>create database nome_do_banco_de_dados ;
mysql>GRANT select,update,insert,delete,alter,show,create,index,drop ON nome_do_banco_de_dados.* TO usuario IDENTIFIED BY 'senha' ;

Isso garante os comandos listados (Select...) no banco de dados informado, a todas as tabelas ( pelo * ) para o usuário indicado com a senha informada. Como o usuário não existe ele sera criado. ;)

E o postgree?

# apt-get install postgresql-8.1 postgresql-cliente-8.1 pgadmin3 php5-pgsql

Instala o servidor, o cliente terminal, o administrador gráfico e o modulo para o php. Para usar é um pouco mais complicado!

Primeiro crie uma pasta para conter o banco de dados:

# mkdir -p /opt/postgre/data
# chown postgres.postgres /opt/postgre -R
# chmod 755 /opt/postgre -R

Depois edite o arquivo /etc/postgresql/8.1/main/postgresql.conf , procure as linhas abaixo e deixas assim:


listen_addresses = 'localhost'
data_directory = '/var/lib/postgresql/8.1/main/base'

OK, agora pode iniciar o servidor, como root passe ao usuário postgres:

$ su
(digite sua senha de root)
# su - postgres
(agora esta como postgres)
$ cd /usr/lib/postgres/8.1/bin
(todos os comandos são desta pasta)

Agora crie o banco de dados nesta pasta:

$ ./initdb -D /opt/postgre/data

E pode então iniciar o banco de dados, os arquivos de configuração estão na pasta do banco.

$ ./pg_ctl start -D /opt/postgre/data

Para parar use:

$ ./pg_ctl stop -D /opt/postgre/data

Agora para criar um usuário no postgre para esse banco de dados, inicio e depois abra a interface de sql com psql, então entre o seguinte sql:

CREATE ROLE nome_do_usuario LOGIN PASSWORD 'senha' NOSUPERUSER NOCREATEROLE NOCREATEDB ;

(até o ponto o vírgula ainda não terminou a instrução)

Traduzindo: CRIE O PAPEL nome_do_usuario QUE FAZ LOGIN COM PASSWORD 'senha' NAO SUPERUSUARIO(ROOT) não CRIA ROLE NAO CRIA DB ;

Após isso pode-se usar o pgamin3 como usuario comuna para administrar o banco de dados.

Ficam faltando o certificado SSL no apache, depois o JAVA e o Tomcat, até o próximo post!
 

Links e Mais Links

E-mail Print PDF

Estou fazendo um curso, de onde escrevo esse post agora, de Java que esta sendo incrível mas consume um bom tempo. Além disso tenho dois projetos grandes acontecendo, um CRM que ainda esta no planejamento e um Sistema de auditorias Incrível que esta me consumindo vivo hehehe. Mas tem sido ótimo, aprendendo muito com esses projetos em php e o curso em java, conhecimento que vou procurar compartilhar por aqui.

Fica então sobre o que tenho Lido por ai de interessante já que não vou escrever nada agora:

.:WebHome > TWikiBar > Aqui temos um _livro livre_ e completo sobre _Shell_:. --Ótima referencia sobre shell script, que é sempre útil

Linux: Comando MAKE [Artigo] --Eu pretendia até fazer um post sobre o make, esta engavetado a muuuuito tempo. Mas fica esse por hora. 

HSQLDB-- Hipersonic SQL database, banco de dados pequeno e rápido escrito em java, parece interessante. 

Apache: Como usar SSL e criar seu certificado instalando sua própria Autoridade Certificador-- Em ambos os projetos precisei certificar, então estudei um pouco. Mas vi mais coisas mesmo na linux magazine. 

Linux: Servidor IM interno em 5 minutos (jabber) [Artigo]-- Parece ser bem útil... 

Programando em MVC com PHP - phpbrasil.com -- Eu não li na verdade, mas indico a todos que querem aprender Orientação a Objetos e padrões  OO  em PHP;

PHP: PDO Functions - Manual -- A principio parece um bela abstração para camadas de persistência. Outro post que estava engavetado.

Mas sobre persistência, é a camada que lida com a comunicação com banco de dados. Em meus projetos recentes desenvolvi uma classe para tal, que espero compartilhar em breve, com a qual nunca mais usei SQL.  Mais ainda tem muito o que melhorar, inclusive para facilitar o mapeamento objeto-relacional atender a mais alguns padrões de projetos.

Fiz ainda de bob um script em python para lidar com o Vivo Zap 3G e o Modem Yiso da luxicom no linux, uma interface para facilitar e manter a conexão... mas ainda esta bem primário. Caso precisem de ajuda com a vivo zap no linux é só pedir.

Por hora é só essa enrolação mesmo...

 

Javascript DOM não obstrusivo

E-mail Print PDF

Volto hoje a escrever sobre javascript . O Ultimo post ja falei um pouco sobre DOM API do javascript e como manipular elementos XHTML em uma pagina. Hoje pretendo focar em boas práticas de como aplicar os recursos de javascript, mantendo o bom código e a acessibilidade.

Algumas premissas devem ser entendidas, sobre as quais não vou prender na explicação. Não se esqueça que o conteúdo vem acima de tudo, então ter um monte de recursos legais não adiante se isso dificultar chegar ao conteúdo, e principalmente o site deve ser perfeitamente navegavel sem javascript. Isso mesmo. Questão de acessibilidade e de SEO.

O JS deve ser usado para facilitar a navegação e oferecer recursos extras, facilidades, e não para SER a navegação em si. Aconselho a primeiro fazer todo o site funcionando normalmente, todo o fluxo de paginas e informações, e depois aplicar o JS onde esse possa ser útil.

Mãos a obra:

Um uso por exemplo de Javascript, ou ajax que seja, em link. Muitos sites hoje utilizam em certo ponto navegação sem reload de pagina, apenas alterando através de JS o conteúdo de uma determinada area do site. O erro é SE o link só funciona dessa forma:

<a href="javascript:func()">

Isso é um erro comum. O correto é que o link funcione e uma pagina abra normalmente com o conteúdo caso o javascript não funcione. Fazendo assim:

<a href="http://pagina.com/"  onclick="return func()" >  ou <a href="http://pagina.com" onclick="func(); return false;" >

O que acontece é que, caso o onclick retorne FALSO, o evento acaba e o link não é acionado. Isso vai acontecer com o JS acionado. Caso o JS não esteja funcionando por algum motivo, o link vai funcionar tradicionalmente. No caso o func() quardadra a função para alterar o conteúdo

Um exemplo de validação automática de formulário, faremos uma função que percorre os campos do fomulario, procurando por aqueles que devem ser validados, e retorna false caso nao valide algum.

<script> 

function valida(form) {
    // deve-se passar qual formulario a valida
    // normalmente this
    for(i=0;(a=form.getElementsByTagName("input")[i]);i++) {
        // Aki fazemos um loop pelos inputs do form
        if(a.getAttribute("valida") == "ok") {
            // se o atribute valida é ok
            if(a.value.lenght <= 1) {
                // Se nao foi preenchido com mais de uma letra
                alert("O campo "+ a.getAttribute("id") +" é obrigatório") ;
                return false;
                // retorna falso, cancelando o envio e terminando a funcao
            }
        }
    }
    return true ;
}

</script> 

E no formulario fazemos assim:

<form action="enviar.php" method="post" name="contanto" onsubmit="return valida(this)" >

Isso que dizer que ao enviar o formulário ele executara a funcao valida. No mesmo caso do link, esta retornando falso o envio é cancelado. Caso nao tenha javascript, o formulario é enviado. Caso os campos estajam preenchidos, o formulario é enviado pois retorna verdadeiro.

Vejam bem, cada caso é um caso. Existe sim por exemplo casos em que se possa fazer uma pagina baseada em JavaScript, se for por exemplo para o painel de controle da empresa, ou para o sistema de gestão. Mas em paginas de INFORMÇÂO, abertas, de CONTEÚDO deve-se pensar duas ou mais vezes antes disso, pois vai dificultar o acesso ao seu conteúdo.

Por hoje é só!

 

Last Updated on Wednesday, 06 February 2008 23:36
 


Page 18 of 20