Paths do produtos baseados no WLS
Alguns produtos da Oracle utilizam as informações encontradas no arquivo: $MW_HOME/wlserver_10.3/.product.properties para criação de domínios, configuração e afins.
O conteúdo do arquivo é similar a esse:
JAVA_HOME=/u01/jvm javax.xml.parsers.SAXParserFactory=com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl USER_LANGUAGE=en NODEMGR_PORT=5556 WLS_INSTALL_DIR=/u01/Oracle/Middleware/wlserver_10.3 COHERENCE_HOME=/u01/Oracle/Middleware/coherence_3.6 LOCALE=ccjk WLS_JAVA_HOME=/u01/jvm javax.xml.parsers.DocumentBuilderFactory=com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl WL_HOME=/u01/Oracle/Middleware/wlserver_10.3 java.vm.version=R28.1.4-7-144370-1.6.0_26-20110617-2130-linux-x86_64 MW_HOME=/u01/Oracle/Middleware WLS_JAVA_VENDOR=Oracle weblogic.server.modules.featurejar=/u01/Oracle/Middleware/modules/features/weblogic.server.modules_10.3.5.0.jar javax.xml.transform.TransformerFactory=com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl PLATFORMHOME=/u01/Oracle/Middleware/wlserver_10.3 WLS_PRODUCT_VERSION=10.3.5.0 java.vm.vendor=Oracle Corporation BEAHOME=/u01/Oracle/Middleware DOCSWEBROOT=http\://download.oracle.com/docs/cd/E17904_01/web.1111 CONFIGWIZ_HOME=/u01/Oracle/Middleware/wlserver_10.3 JAVAHOME=/u01/jvm
Para alterar o caminho do Java por exemplo, é só mudar as variáveis JAVA_HOME, JAVAHOME e WLS_JAVA_HOME.
Outro local para alteração das variáveis de ambiente é o: $MW_HOME/wlserver_10.3/common/bin/commEnv.sh
Alterando o Java Home no Red Hat e derivados
Para alterar o JAVA_HOME no Red Hat e derivados (vale para outras versões de Linux também, mas pra versões baseadas em Debian, como o Ubuntu, existem outras maneiras) edite o arquivo .bash_profile na home do usuário. Por exemplo:
vim ~/.bash_profile
Se você deseja alterar para todos os usuários, adicione um arquivo /etc/profile.d/jvm.sh
E inclua o seguinte conteúdo no final do arquivo (para qualquer um dos casos):
export JAVA_HOME=/u01/jvm export PATH=$JAVA_HOME/bin:$PATH
Digite source ~/.bash_profile ou source /etc/profile (no caso de todos os usuários). Verifique se deu certo digitando o seguinte comando:
echo $JAVA_HOME which java
A saída desses comandos deve apontar para o local onde o java está instalado.
Rodando aplicação Ginga no VT7200D
Para rodar sua aplicação Ginga, tanto NCL/LUA quanto Java no VT7200D (para saber sobre o VT7200D, consulte aqui) é necessário realizar alguns truques.
O primeiro passo é inserir um pendrive no seu computador. Digite: dmesg no terminal para saber em qual é o device. No meu caso (pendrive de 2GB) apareceu o seguinte nas últimas linhas:
[39858.172559] sd 10:0:0:0: Attached scsi generic sg3 type 0 [39858.175660] sd 10:0:0:0: [sdc] 3911616 512-byte logical blocks: (2.00 GB/1.86 GiB) [39858.177408] sd 10:0:0:0: [sdc] Write Protect is off [39858.177412] sd 10:0:0:0: [sdc] Mode Sense: 65 44 09 30 [39858.178402] sd 10:0:0:0: [sdc] No Caching mode page present [39858.178406] sd 10:0:0:0: [sdc] Assuming drive cache: write through [39858.182402] sd 10:0:0:0: [sdc] No Caching mode page present [39858.182405] sd 10:0:0:0: [sdc] Assuming drive cache: write through [39858.183040] sdc: sdc1
Dessa forma eu sei que o meu device é /dev/sdc. Caso o seu pendrive tenha alguma partição (no meu caso tem: sdc1) o Ubuntu irá montá-la automaticamente. Nos próximos comando substitua o sdc para o valor correto em sua máquina. Para “desmontar” (no bom sentido), digite:
««« Clique aqui para ler o restante do conteúdo: Rodando aplicação Ginga no VT7200D »»»
Centésimo post, J1, pizza com café e novidades
Esse é o centésimo post do blog… Até que enfim estou conseguindo tocar o blog! Já comecei o blog pelo menos 4 vezes e, finalmente, está dando bem certo. Descobri que o segredo para manter um blog não é querer escrever toda a hora ou escrever por obrigação, mas é escrever um pouquinho por vez quando dá e de algo que você goste ou esteja utilizando.
Junto com a novidade do centésimo post, nesse mês, vieram várias outras. Realizei um apresentação de TV Digital no Java One 2011, junto com o Carlos Fernando Gonçalvez e foi muito legal. Fui convidado para o Community Keynote do evento onde pude demonstrar a força da comunidade Java como membro do JavaNoroeste e a integração da TV Digital com o JHome para controle de equipamentos e automação residencial pela televisão. As fotos do evento e vídeos do Community Keynote, podem ser encontradas nesses links:
- Eu demonstrando a aplicação de TV Digital utilizando twitter. Twittado pela @yarasenger: http://twitpic.com/7q9e0r/full
- Álbum da Globalcode do Java One 2011: https://picasaweb.google.com/101683666840607649394/JavaOneBrasil201102
- Álbum do Marcelo Quinta: https://plus.google.com/photos/103787114309180546346/albums/5684287518153548609
- Blog do Neto: http://netomarin.com/blog/20111220/javaone-latin-america-2011-ultimos-dias-e-minha-palestra/
- Globalcoders: http://blog.globalcode.com.br/2011/12/javaone-brasil-2011-java-spotlight.html
- Blog da Loiane: http://www.loiane.com/2011/12/javaone-brasil-2011-video-do-community-keynote/
- Vídeo do Real Java Geeks: http://www.youtube.com/watch?v=BNJIjgFhpUA
Outra coisa bacana é o surgimento de um novo podcast do qual faço parte: o Pizza Com Café. A ideia surgiu da necessidade de reuniões mensais para troca de informações, mas por falta de tempo resolvemos realizar uma pizzada e gravar um podcast e dessa forma surgiu o Pizza com Café. Já temos uma gravação feita e em breve o podcast entra no ar!
Além dessas notícias, consegui tirar a certificação Oracle Certified Master, Java EE 5 Enterprise Architect. É uma certificação muito difícil e me senti obrigado à prestar após o anúncio da Oracle que para tirar essa certificação iria ser necessário realizar cursos oficiais Oracle como pré-requisito. Como eu já tinha a primeira fase (prestei beta), resolvi prestar as outras duas etapas restantes. Consegui passar logo de primeira, o que me deixou bastante feliz, já que pra mim essa é a prova mais difícil de tecnologia Java, pois envolve teoria, prática, muito conhecimento e experiência.
Obrigado à todos que contribuíram para todas essas realizações
Agora é só aguardar pelas novidades de 2012!
Review do Receptor de TV Digital VT7200D
Pra demonstrar aplicativos rodando na TV Digital no Java One resolvi comprar um receptor de desenvolvedor. O aparelho possui a implementação Ginga completa da TQTVD. Roda aplicativos NCL/Lua e Java, além de possuir o StickerCenter, que é um market para aplicativos de TV Digital. Você pode ter mais informações nesse link: http://www.stickercenter.com.br. Ainda não tive tempo de testar o envio de aplicativos para o StickerCenter. Em breve, posto o resultado.
VT7200D para Desenvolvedor
Realizei a compra pela loja virtual da Visiontec, consegui desconto de R$ 300,00 por me cadastrar no https://www.astrodevnet.com.br. Realizei o pedido no dia 29/11/2011 utilizando E-Sedex, no dia 30/11/2011 foi postado em Jacareí/SP e no dia 01/12/2011 recebi corretamente a encomenda. O aparelho funciona
, mas infelizmente não vem nenhum manual para o desenvolvedor. Na verdade ele é o VT7200E (inclusive vem escrito nele), mas vem com o software para desenvolvedor.
««« Clique aqui para ler o restante do conteúdo: Review do Receptor de TV Digital VT7200D »»»
Habilitando Cookies Seguros no WebLogic
Em requisições HTTPS que utilizam cookies é importante habilitar a flag SECURE=”TRUE” nos cookies. Para realizar isso no WebLogic, é necessário adicionar as seguinte linha no weblogic-application.xml
<wls:session-descriptor> <wls:cookie-secure>true</wls:cookie-secure> </wls:session-descriptor>
E garantir que no console do weblogic esteja marcado o seguinte: Domain -> Configuration -> Web Application tab, enable “Auth Cookie Enabled”
Para garantir, abrir o config.xml do weblogic e adicionar/alterar a tag:
<auth-cookie-enabled>true</auth-cookie-enabled>
Mais informações: http://www.owasp.org/index.php/OWASP_AppSec_FAQ#What_are_these_secure_cookies.3F
Bibliotecas Nativas do Tomcat
As bibliotecas nativas do Tomcat são interfaces JNI para aumentar o desempenho das aplicações que rodam no servidor Tomcat através de chamadas nativas. Quando você não tem essas libs no library path do java, o Tomcat exibe a seguinte informação no log: “INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path”.
O primeiro passo é instalar as bibliotecas do APR e do OpenSSL. Para isso, execute o seguinte comando no Ubuntu (ou similares Debian):
««« Clique aqui para ler o restante do conteúdo: Bibliotecas Nativas do Tomcat »»»
Habilitando o JPA 2 no WebLogic Server
Por padrão o WebLogic Server não vem com o JPA 2 habilitado. Então ao utilizar recursos específicos do JPA 2 dentro do WebLogic Server você pode ter erros semelhantes a esse: java.lang.NoSuchMethodError: javax.persistence.EntityManager.getCriteriaBuilder()Ljavax/persistence/criteria/CriteriaBuilder;
Para resolver esse problema é necessário colocar as libs do JPA 2 no início do classpath do WebLogic. As libs estão disponíveis no caminho $WL_HOME/modules e são as seguintes: javax.persistence_1.0.0.0_2-0-0.jar e com.oracle.jpa2support_1.0.0.0_2-0.jar.
Edite o arquivo setDomainEnv.[sh|cmd] e insira a variável PRE_CLASSPATH da seguinte maneira:
export PRE_CLASSPATH=$MW_HOME/modules/javax.persistence_1.0.0.0_2-0-0.jar:$MW_HOME/modules/com.oracle.jpa2support_1.0.0.0_2-0.jar
No windows, substitua o comando export por set e os dois pontos para ponto e vírgula. Altere o $MW_HOME para o home do middleware. Agora é só realizar deploy do seu aplicativo com JPA 2.
Enviando e-mail usando GMail
Nesse post eu irei criar uma classe que envia e-mail HTML de um servidor com autenticação usando SSL. Como exemplo, utilizaremos uma conta do GMail.
Primeiro passo é criar a conta do GMail (ou usar a sua). Acesse o site: http://www.gmail.com e clique em Criar uma conta (Create an account). Siga os passos e anote a senha. Faça o download da API do Java Mail no site: http://www.oracle.com/technetwork/java/index-138643.html e descompacte-a.
««« Clique aqui para ler o restante do conteúdo: Enviando e-mail usando GMail »»»
Alterando o espaço de cores
No Java temos uma classe muito importante para se trabalhar com conversão do espaço de cores em imagens: java.awt.image.ColorConvertOp. Essa classe realiza a conversão pixel a pixel do espaço de cores. Dessa forma, podemos facilmente converter uma imagem de um espaço de cores qualquer para algum definido. É necessário apenas criar um objeto dela passando o espaço de cores de origem e o de destino e depois chamar o método filter passando as duas imagens (origem e destino).
Por exemplo, se desejamos converter uma imagem de colorida para preto e branco, basta executar o seguinte código:
BufferedImage dest = new BufferedImage(src.getWidth(), src.getHeight(), BufferedImage.TYPE_BYTE_BINARY); ColorConvertOp op = new ColorConvertOp(src.getColorModel() .getColorSpace(), dest.getColorModel().getColorSpace(), null); op.filter(src, dest);
Na linha 1 é criada uma imagem cinza não indexada (BufferedImage.TYPE_BYTE_GRAY) com o mesmo tamanho da imagem de origem (src.getWidth(), src.getHeight()). Os tipos você pode consultar no javadoc da java.awt.image.BufferedImage. Na linha 4 é criado um objeto que faz a conversão no espaço de cores e é passado os dois espaços de cores (origem e destino) a partir do ColorModel da imagem (img.getColorModel().getColorSpace()). Após isso é só invocar o método filter passando as duas imagens como parâmetro (linha 7).
Abaixo segue o resultado de conversão da bandeira do Brasil (primeira imagem), com três tipos de imagens: TYPE_BYTE_BINARY (segunda imagem), TYPE_BYTE_GRAY (terceira imagem) e TYPE_3BYTE_BGR (quarta imagem).
A conversão feita com o tipo TYPE_BYTE_BINARY foi utilizado no artigo do CAPTCHA para remoção do fundo.










