<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-899304189132378350</id><updated>2012-01-13T13:30:48.247Z</updated><category term='prompt'/><category term='bpel'/><category term='plug-ins'/><category term='SQL'/><category term='linha comandos'/><category term='soa'/><category term='fontes'/><category term='gwt'/><category term='maven'/><category term='gwt-ext'/><category term='interfaces'/><category term='jar'/><category term='jogos'/><category term='despiste problemas'/><category term='exemplo'/><category term='firefox'/><category term='conversores'/><category term='liferay'/><category term='iphone'/><category term='gwt-dnd'/><category term='inovaworks jogos'/><category term='11g'/><category term='e-mail'/><category term='dropoly'/><category term='SimpleDateFormat'/><category term='unicode'/><category term='vSphere'/><category term='eclipse'/><category term='solaris'/><category term='xp'/><category term='teclas'/><category term='oracle service bus'/><category term='ucm'/><category term='java'/><category term='jdev'/><category term='base de dados'/><category term='putty'/><category term='conteudos'/><category term='erros'/><category term='bash'/><category term='apache directory studio'/><category term='root'/><category term='stylish'/><category term='oracle'/><category term='consola grafica'/><category term='ferramentas'/><category term='texto latino'/><category term='jaiphon'/><category term='html'/><category term='CMS'/><category term='jar finder'/><category term='ssl'/><category term='configurações'/><category term='weblogic'/><category term='remote desktop'/><category term='livros'/><category term='exportar'/><category term='google'/><category term='design patterns'/><category term='smtp'/><category term='jdbc'/><category term='puzzle quest'/><category term='passwords'/><category term='red hat'/><category term='tomcat'/><category term='wsdl'/><category term='ocp'/><category term='arranque'/><category term='jdeveloper'/><category term='comedia'/><category term='xming'/><category term='ldap'/><category term='osb'/><category term='ca'/><category term='windows'/><category term='two-way ssl'/><category term='instalar'/><category term='axis2'/><category term='redes'/><category term='produtividade'/><category term='certificados'/><category term='apache'/><category term='linux'/><category term='ibatis'/><category term='importar'/><category term='ant'/><category term='registo'/><category term='vi'/><category term='cygwin'/><category term='certificacao'/><category term='dbadapter'/><category term='wii'/><category term='ssh'/><category term='jvm'/><category term='openldap'/><category term='regex'/><category term='apache http server'/><category term='unix'/><category term='2003 server'/><category term='samba'/><category term='jad'/><title type='text'>Mundo Java</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://javari.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>97</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4539716398346227948</id><published>2012-01-04T10:46:00.002Z</published><updated>2012-01-04T10:48:22.378Z</updated><title type='text'>Solaris 10 - Verificação de checksum em MD5</title><content type='html'>Para calcular a soma MD5 (calcular checksums) em Solaris:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;digest -a md5 -v /path/to/file&lt;/pre&gt;&lt;pre&gt; &lt;/pre&gt;&lt;pre style="font-family: inherit;"&gt;Referências: &lt;a href="http://blog.mc-thias.org/?title=solaris-10-md5-sum-checking&amp;amp;more=1&amp;amp;c=1&amp;amp;tb=1&amp;amp;pb=1%20"&gt;IT Stuff&lt;/a&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4539716398346227948?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4539716398346227948/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4539716398346227948' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4539716398346227948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4539716398346227948'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2012/01/solaris-10-verificacao-de-checksum-em.html' title='Solaris 10 - Verificação de checksum em MD5'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1207058995325750018</id><published>2011-11-22T11:23:00.001Z</published><updated>2012-01-13T13:30:48.251Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='openldap'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Instalação do OpenLDAP no Solaris 10 em Sparc</title><content type='html'>&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;&lt;span style="font-size: small;"&gt;A instalação tem de ser realizada com o utilizador &lt;i&gt;root.&lt;/i&gt;&lt;/span&gt; &lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;1. Descarregar os seguintes pacotes&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Localização dos pacotes: &lt;a href="http://www.sunfreeware.com/indexsparc10.html"&gt;http://www.sunfreeware.com/indexsparc10.html&lt;/a&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;openldap-2.4.26&lt;/li&gt;&lt;li&gt;openssl-1.0.0e&lt;/li&gt;&lt;li&gt;db-4.7.25.NC&lt;/li&gt;&lt;li&gt;gcc-3.4.6&lt;/li&gt;&lt;li&gt;libgcc-3.4.6&lt;/li&gt;&lt;li&gt;sasl-2.1.25&lt;/li&gt;&lt;li&gt;libiconv-1.14&lt;/li&gt;&lt;li&gt;libtool-2.4&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;2. Instalar os pacotes&lt;/span&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;gunzip gcc-3.4.6-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip libgcc-3.4.6-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip sasl-2.1.25-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip libiconv-1.14-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip libtool-2.4-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip db-4.7.25.NC-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip openssl-1.0.0e-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;gunzip openldap-2.4.26-sol10-sparc-local.gz&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;pkgadd -d gcc-3.4.6-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d libgcc-3.4.6-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d sasl-2.1.25-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d libiconv-1.14-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d libtool-2.4-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d openssl-1.0.0e-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d db-4.7.25.NC-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;pkgadd -d openldap-2.4.26-sol10-sparc-local&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;2.1&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;crle -c /var/ld/ld.conf -l /lib:/usr/lib -s /lib/secure:/usr/lib/secure:/usr/lib/mps:/usr/lib/mps64&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;3. Preparação do ambiente&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;export LD_NOVERSION=yes&lt;br /&gt;export PATH=$PATH:/usr/local/sbin&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: large;"&gt;4. Criação do grupo e utilizador LDAP&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;groupadd –g 55 ldap&lt;br /&gt;useradd -u 55 -g 55 -d /export/home/ldap -s /bin/false ldap&lt;br /&gt;&lt;br /&gt;mkdir /export/home/ldap&lt;br /&gt;chown -R ldap:ldap /export/home/ldap/&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;4.1 Adicionar ldap ao grupo deamon&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;vi /etc/group&lt;br /&gt;&lt;br /&gt;daemon::12:root,ldap&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;&lt;br /&gt;5. Preparação da pasta do OpenLDAP&lt;/span&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;mkdir –p /usr/local/var/openldap-data&lt;br /&gt;chmod 700 /usr/local/var/openldap-data&lt;br /&gt;chown –R ldap:daemon /usr/local/var/openldap-data&lt;br /&gt;chown –R ldap:daemon /usr/local/etc/openldap&lt;br /&gt;&lt;br /&gt;chown -R root:daemon /usr/local/var/run/&lt;br /&gt;chmod -R 775 /usr/local/var/run/&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;6. Configuração&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6.1 Editar o ficheiro slapd.conf&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6.1.1 Adicionar&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/local/etc/openldap/schema/cosine.schema&lt;br /&gt;include&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; /usr/local/etc/openldap/schema/inetorgperson.schema&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6.1.2 Alterar&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;suffix&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "dc=pt2,dc=pt"&lt;br /&gt;rootdn&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "cn=Manager,dc=pt2,dc=pt"&lt;br /&gt;rootpw&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; passwordDoManager&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;6.1.3 Adicionar&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# Indices to maintain&lt;br /&gt;index default pres,eq&lt;br /&gt;index&amp;nbsp;&amp;nbsp; objectClass&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; eq&lt;br /&gt;index uid,cn,sn&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6.2&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;cd /usr/local/etc/openldap/&lt;br /&gt;&lt;br /&gt;cp /usr/local/etc/openldap/DB_CONFIG.example /usr/local/var/openldap-data/DB_CONFIG&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;7. Iniciar o OpenLDAP&lt;/span&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;i&gt;cd /usr/local/libexec/&lt;/i&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;./slapd&amp;nbsp;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;Caso seja necessário efectuar debug para resolver eventuais problemas no arranque:&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;./slapd -d 100&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;8. Verificar se está funcional&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;tt&gt;ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts&lt;/tt&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;9. Criar a raíz&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;tt&gt; &lt;/tt&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;b style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;span style="font-size: small;"&gt;9.1) base.ldif&lt;/span&gt;&lt;/b&gt;&lt;tt&gt;&lt;br /&gt;&lt;br /&gt;dn: dc=pt2,dc=pt&lt;br /&gt;dc: pt2&lt;br /&gt;objectClass: domain&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;9.2) ldapadd&amp;nbsp;&amp;nbsp; -D "cn=Manager,dc=pt2,dc=pt" -w password -f base.ldif&lt;/tt&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Referência&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a href="http://oskb.wordpress.com/2009/02/23/install%C2%A0and%C2%A0configure%C2%A0openldap%C2%A0server%C2%A0solaris10/"&gt;http://oskb.wordpress.com/2009/02/23/install%C2%A0and%C2%A0configure%C2%A0openldap%C2%A0server%C2%A0solaris10/&lt;/a&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1207058995325750018?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1207058995325750018/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1207058995325750018' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1207058995325750018'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1207058995325750018'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/11/instalacao-do-openldap-no-solaris-10-em.html' title='Instalação do OpenLDAP no Solaris 10 em Sparc'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-395607199218815066</id><published>2011-11-09T15:58:00.003Z</published><updated>2011-11-09T15:59:12.722Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ca'/><category scheme='http://www.blogger.com/atom/ns#' term='certificados'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><title type='text'>Criar um CA e assinar certificados</title><content type='html'>Por vezes é necessário criar uma CA (CertificateAuthority) e assinar certificados com a CA. Obviamente que quer a CA quer os certificados não devem ser usados num ambiente de produção. Nesse caso usar uma das CAs oficiais.&lt;br /&gt;&lt;br /&gt;Passos resumidos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Criar a chave e o certificado da CA&lt;/li&gt;&lt;li&gt;Criar a chave e o pedido de certificado para o servidor (usar o mesmo método para criar vários)&lt;/li&gt;&lt;li&gt;Assinar o pedido de certificado para o servidor com a CA criada&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Passo 1:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;openssl genrsa -des3 -out ca.key 4096&lt;/i&gt;&lt;br /&gt;&lt;i&gt;openssl req -new -x509 -days 365 -key ca.key -out ca.crt &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Passo 2:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;openssl genrsa -des3 -out server.key 4096&lt;br /&gt;openssl req -new -key server.key -out server.csr&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Passo 3:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;openssl x509 -req -days 365 -in server.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out server.crt&lt;/i&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Aquando da criação do certificado da CA e do pedido de certificado de servidor ter em atenção que o &lt;i&gt;Common Name&lt;/i&gt; tem de ser diferente. Caso contrário poderão surgir problemas inesperados quando se usam os certificados.&lt;br /&gt;&lt;br /&gt;No exemplo acima os certificados têm a validade de um ano.&lt;br /&gt;&lt;br /&gt;O número de série deve ser diferente se o mesmo certificado for regerado, para evitar problemas nos clientes que já tenham o certificado em cache.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Referências:&lt;br /&gt;&lt;a href="http://www.tc.umn.edu/%7Ebrams006/selfsign.html"&gt;http://www.tc.umn.edu/~brams006/selfsign.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-395607199218815066?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/395607199218815066/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=395607199218815066' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/395607199218815066'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/395607199218815066'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/11/criar-um-ca-e-assinar-certificados.html' title='Criar um CA e assinar certificados'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7021750921445077351</id><published>2011-11-09T14:16:00.003Z</published><updated>2011-11-09T14:16:57.769Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='google'/><title type='text'>Alterar cor dos links já visitados no Google</title><content type='html'>Ultimamente a Google anda a alterar a pesquisa e o modo como a informação é apresentada. Uma das piores coisas que eles fizeram foi não indicar que links já visitamos como faziam antigamente. Houve uma altura que indicavam quando foi a última vez que o link foi visitado dando o dia e a hora, e antes disso simplesmente um link já visitado tinha uma cor diferente.&lt;br /&gt;&lt;br /&gt;Ora bem, para indicar com uma cor diferente os links já visitados, se tiverem a usar o Firefox, é só instalar o plug-in &lt;a href="https://addons.mozilla.org/en-US/firefox/addon/stylish/"&gt;Stylish &lt;/a&gt;e adicionar a seguinte regra:&lt;br /&gt;&lt;br /&gt;(depois de instalar é necessário fazer restart ao Firefox)&lt;br /&gt;&lt;div style="font-family: Arial,Helvetica,sans-serif;"&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/i&gt;&lt;/div&gt;&lt;i&gt;&lt;span style="font-size: x-small;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;@namespace url(http://www.w3.org/1999/xhtml);&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;@-moz-document domain("www.google.com") {&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;a:visited {color:#0F0!important;}&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;}&lt;/span&gt;&lt;br style="font-family: Arial,Helvetica,sans-serif;" /&gt;&lt;/span&gt;&lt;/i&gt;&lt;br /&gt;Para adicionar a regra fazer:&lt;br /&gt;&lt;br /&gt;Carregar no botão do Stylish (se não aparecer ir ao menu Firefox &amp;gt; Add-ons.&lt;br /&gt;Escolher&amp;nbsp; Write new style -&amp;gt; Blank Style.&lt;br /&gt;Dar um nome (por exemplo Google) e colar a regra acima. Salvar.&lt;br /&gt;E pronto. Os links já visitados irão, neste caso, aparece a verde alface (0F0). Podem mudar a cor para outra.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7021750921445077351?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7021750921445077351/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7021750921445077351' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7021750921445077351'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7021750921445077351'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/11/alterar-cor-dos-links-ja-visitados-no.html' title='Alterar cor dos links já visitados no Google'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-301765424066457868</id><published>2011-11-02T19:12:00.002Z</published><updated>2011-11-02T19:12:59.470Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache http server'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Activar SSL entre Apache e Weblogic</title><content type='html'>A activação de SSL entre o Apache (a actuar como Reverse Proxy) e o Weblogic é relativamente simples.&lt;br /&gt;A configuração que irá ser demonstrada aqui não usa o Plug-in Weblogic existente para Apache. Antes ir-se-á usar apenas e só directivas Apache.&lt;br /&gt;&lt;br /&gt;Existem alguns pressupostos na configuração seguinte:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;O Apache já está configurado com SSL&lt;/li&gt;&lt;li&gt;O Weblogic já está preparado para SSL (certificados criados, keystores configuradas)&lt;/li&gt;&lt;/ol&gt;Uma configuração possível é então a seguinte:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Activar a opção &lt;i&gt;SSL Enabled&lt;/i&gt; no Weblogic. Indicar o porto de escuta de SSL (&lt;i&gt;[Domínio] -&amp;gt; Environment -&amp;gt; Servers -&amp;gt; [Servidor] -&amp;gt; Configuration -&amp;gt; General&lt;/i&gt;)&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;b&gt;SSL Listen Port Enabled&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;SSL Listen Port&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Adicionar o certificado do Apache à keystore do Weblogic. Efectuar este passo com a ferramenta &lt;i&gt;keytool&lt;/i&gt;, por exemplo.&lt;/li&gt;&lt;li&gt;No Apache na secção &lt;i&gt;&amp;lt;VirtualHost *:443&amp;gt;&lt;/i&gt; adicionar a instrução: &lt;i&gt;&lt;b&gt;SSLProxyEngine on&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Se no Apache se tiver configurado o mod_proxy, um exemplo de configuração para Reverse Proxy é:&lt;/li&gt;&lt;/ol&gt;&lt;i&gt;&amp;lt;Location / &amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; ProxyPass https://weblogic.host.com:7002/futebol&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; ProxyPassReverse https://&lt;/i&gt;&lt;i&gt;weblogic.host.com&lt;/i&gt;&lt;i&gt;:7002/futebol&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;/Location / &amp;gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-301765424066457868?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/301765424066457868/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=301765424066457868' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/301765424066457868'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/301765424066457868'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/11/activar-ssl-entre-apache-e-weblogic.html' title='Activar SSL entre Apache e Weblogic'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5084783468232181427</id><published>2011-10-19T15:05:00.002+01:00</published><updated>2011-10-19T15:06:15.803+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xming'/><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Redireccionar ambiente gráfico através de SSH de uma segunda máquina</title><content type='html'>Acedendo remotamente a máquinas Solaris é necessário por vezes reencaminhar a parte gráfica para a máquina onde estamos (pois é o único monitor a que temos acesso). Usando o &lt;i&gt;Xming &lt;/i&gt;e o &lt;i&gt;PUTTY &lt;/i&gt;isto é relativamente fácil.&lt;br /&gt;&lt;br /&gt;Contudo por vezes temos outra necessidade. Entrando numa máquina remota, usamos essa para aceder a outra. Como fazer para obter o ambiente gráfico desta segunda máquina?&lt;br /&gt;&lt;br /&gt;É simples. Tendo tudo montado para receber os gráficos da primeira máquina basta iniciar a sessão na segunda máquina do seguinte modo:&lt;br /&gt;&lt;br /&gt;ssh &lt;b&gt;-X &lt;/b&gt;user@maquina.xpto.pt&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5084783468232181427?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5084783468232181427/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5084783468232181427' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5084783468232181427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5084783468232181427'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/redireccionar-ambiente-grafico-atraves.html' title='Redireccionar ambiente gráfico através de SSH de uma segunda máquina'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-638071221030901834</id><published>2011-10-19T10:51:00.002+01:00</published><updated>2011-10-19T10:51:07.139+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fontes'/><title type='text'>Fontes gratuitas</title><content type='html'>&lt;a href="http://www.azfonts.net/"&gt;http://www.azfonts.net/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-638071221030901834?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/638071221030901834/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=638071221030901834' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/638071221030901834'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/638071221030901834'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/fontes-gratuitas.html' title='Fontes gratuitas'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3248889342163431759</id><published>2011-10-18T17:53:00.001+01:00</published><updated>2011-10-18T18:04:49.933+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='two-way ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='apache'/><title type='text'>Configuração two-way SSL no Apache</title><content type='html'>Para se obter uma configuração two-way SSL (comunicação SSL duas vias entre Cliente e Servidor) no Apache com certificados auto-assinados (self-signed) efectuar os passos seguintes (é uma das maneiras. eventualmente há melhores maneiras):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Parte-se do principio que o Apache já está configurado para SSL&lt;/li&gt;&lt;li&gt; Em cima desta configuração:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;No ficheiro &lt;i&gt;ssl.conf&lt;/i&gt; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;Descomentar a linha &lt;br /&gt; &lt;i&gt;&lt;b&gt; SSLCACertificateFile /etc/apache2/ssl.crt/ca-bundle.crt&lt;/b&gt;&lt;/i&gt; &lt;br /&gt; &lt;/li&gt;&lt;li&gt;Dentro da tag &amp;lt;virtualhost&amp;gt; ...,&amp;lt;/virtualhost&amp;gt; incluir uma linha do género &lt;br /&gt; &lt;i&gt;&lt;b&gt;Include /etc/apache2/vhost.d/*.conf&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;  que é o local ou o ficheiro que contém as configurações SSL mais específicas que irão ser efectuada &lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Supondo, por exemplo, que se quer proteger uma &lt;i&gt;location &lt;/i&gt;com two-way SSL&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;location /&amp;gt; &lt;br /&gt; SSLVerifyClient optional&lt;br /&gt; SSLUserName SSL_CLIENT_S_DN_CN&lt;br /&gt;&lt;br /&gt;SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste" &lt;br /&gt;&lt;br /&gt;&amp;lt;/location&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;Se não existir criar o ficheiro &lt;i&gt;/etc/apache2/ssl.crt/ca-bundle.crt&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Tendo o certificado cliente basta efectuar: cat client.crt &amp;gt; ca-bundle.crt&lt;/li&gt;&lt;li&gt;Restart do apache e tem-se comunicação 2 way SSL&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;br /&gt;Na &lt;i&gt;location&lt;/i&gt;, a linha&lt;i&gt; SSLRequire %{SSL_CLIENT_S_DN_CN} eq "Teste" &lt;/i&gt;indica que só os certificados de cliente que tenham o CN=Teste é que serão aceites. É possível efectuar outras configurações. Para mais detalhes ver: &lt;a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.htm"&gt;httpd.apache.org/docs/2.2/mod/mod_ssl.htm&lt;/a&gt; &lt;br /&gt;&lt;ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3248889342163431759?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3248889342163431759/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3248889342163431759' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3248889342163431759'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3248889342163431759'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/configuracao-two-way-ssl-no-apache.html' title='Configuração two-way SSL no Apache'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8353791293024284722</id><published>2011-10-18T17:33:00.001+01:00</published><updated>2011-10-18T17:36:11.125+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='certificados'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><title type='text'>Configuração two-way SSL no SoapUi</title><content type='html'>Para configurar two-way SSL (SSL duas vias) no SoapUI, é necessário antes de mais ter a versão 4 ou superior. Existem problemas com a versão 3.6.1 por isso o melhor mesmo é actualizar para a versão mais recente.&lt;br /&gt;&lt;br /&gt;A configuração two-way SSL implica que existam dois certificados, um de Cliente e um de Servidor.&lt;br /&gt;&lt;br /&gt;Para o cliente basta criar um ficheiro p12 com a chave publica e&amp;nbsp; privada, e de lá exportar o certificado de cliente para adicionar ao servidor.&lt;br /&gt;&lt;br /&gt;Caso o certificado do servidor seja auto-assinado, é necessário adicionar esse mesmo certificado ao ficheiro p12 do cliente.&lt;br /&gt;&lt;br /&gt;No SoapUi:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;File -&amp;gt; Preferences&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;SSL Settings&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Na&lt;b&gt; KeyStore&lt;/b&gt; indicar o ficheiro p12 criado para o cliente.&lt;br /&gt;Na &lt;b&gt;KeyStore Password&lt;/b&gt; indicar a password para o ficheiro p12.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;span style="font-size: large;"&gt;Criar o ficheiro de cliente p12 e respectivo certificado&lt;/span&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Instalar, por exemplo, o programa &lt;a href="http://www.lazgosoftware.com/kse/index.html"&gt;KeyStore Explorer&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Create a new KeyStore&lt;/i&gt;&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;JKS&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt; Tools&lt;/li&gt;&lt;ol&gt;&lt;li&gt;&lt;i&gt;Generate Key Pair&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Ok&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Carregar no botão "&lt;i&gt;Edit Name&lt;/i&gt;"&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Preencher os campos (pelo menos o &lt;i&gt;CN &lt;/i&gt;deverá ser preenchido)&lt;/li&gt;&lt;li&gt;Escolher um &lt;i&gt;alias&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;OK &lt;/i&gt;&lt;/li&gt;&lt;li&gt;Escolher e confirmar a password privada&lt;/li&gt;&lt;li&gt;&lt;i&gt;Ok&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Ok&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;li&gt;Com o botão da direita carregar em cima da nova chave (vai-se exportar o certificado a importar no servidor)&lt;/li&gt;&lt;ol&gt;&lt;li&gt;Escolher formato e nome de ficheiro&lt;/li&gt;&lt;li&gt;&lt;i&gt;Export&lt;/i&gt; &lt;/li&gt;&lt;li&gt;&lt;i&gt;Ok&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;li&gt;Salvar a keystore&lt;/li&gt;&lt;ol&gt;&lt;li&gt;File -&amp;gt; Save&lt;/li&gt;&lt;li&gt;Introduzir a password para a keystore&lt;/li&gt;&lt;li&gt;&lt;i&gt;Ok&lt;/i&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8353791293024284722?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8353791293024284722/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8353791293024284722' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8353791293024284722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8353791293024284722'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/configuracao-two-way-ssl-no-soapui.html' title='Configuração two-way SSL no SoapUi'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4101876809005255276</id><published>2011-10-13T18:39:00.000+01:00</published><updated>2011-10-18T17:36:31.929+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Axis2 e Weblogic</title><content type='html'>Devido a problemas de compatibilidade, (um WSDL em RPC) foi necessário criar um webservice em Axis2 e fazer deploy do mesmo em Weblogic 11g.&lt;br /&gt;&lt;br /&gt;Para simplificar, usou-se o axis2.war para ser o container dos serviços.&lt;br /&gt;&lt;br /&gt;Para a coisa funcionar em Weblogic 11g, o war do Axis2 tem de ser deployed exploded.&lt;br /&gt;Para fazer isto basta, por exemplo, descomprimir o war para a directoria .../AdminServer/upload/axis2.&lt;br /&gt;&lt;br /&gt;Depois instalar da maneira normal escolhendo a directoria axis2.&lt;br /&gt;&lt;br /&gt;E tudo irá funcionar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4101876809005255276?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4101876809005255276/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4101876809005255276' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4101876809005255276'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4101876809005255276'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/axis2-e-weblogic.html' title='Axis2 e Weblogic'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8428354014560177815</id><published>2011-10-12T16:00:00.002+01:00</published><updated>2012-01-05T14:51:46.738Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='liferay'/><category scheme='http://www.blogger.com/atom/ns#' term='apache http server'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Colocar Liferay em HTTPS com Apache Reverse Proxy</title><content type='html'>Tendo o Liferay instalado (versão 6.0.6) numa máquina e o Apache HTTP Server (versão 2.0) noutra máquina diferente a servir de Reverse Proxy, são necessários alguns passos para disponibilizar o Liferay em HTTPS.&lt;br /&gt;&lt;br /&gt;No restante texto explica-se como fazer esta configuração em Solaris 10.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.&amp;nbsp; Criar um certificado auto-assinado&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Instruções detalhadas em &lt;a href="http://www.akadia.com/services/ssh_test_certificate.html"&gt;http://www.akadia.com/services/ssh_test_certificate.html&lt;/a&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.1 Gerar uma RSA Private Key&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Numa shell Solaris:&lt;br /&gt;&lt;i&gt;# /usr/sfw/bin/openssl&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Introduzir o comando:&lt;br /&gt;&lt;i&gt;genrsa -des3 -out liferay.key 2048&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Escolher uma pass phrase.&lt;br /&gt;&lt;br /&gt;Irá gerar o ficheiro &lt;i&gt;liferay.key&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.2 Gerar um Certificate Signing Request&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Numa shell Solaris:&lt;br /&gt;&lt;i&gt;#/usr/sfw/bin/openssl&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Introduzir o comando:&lt;br /&gt;&lt;i&gt;req -new -key liferay.key -out liferay.csr&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Introduzir a pass phrase escolhida para a chave privada (RSA Private Key).&lt;br /&gt;&lt;br /&gt;Introduzir informação nos campos seguintes (exemplo):&lt;br /&gt;&lt;br /&gt;Country Name (2 letter code) [US]:PT&lt;br /&gt;State or Province Name (full name) [Some-State]:Lisboa&lt;br /&gt;Locality Name (eg, city) []:Lisboa&lt;br /&gt;Organization Name (eg, company) [Unconfigured OpenSSL Installation]:CFB&lt;br /&gt;Organizational Unit Name (eg, section) []:FUTEBOL&lt;br /&gt;Common Name (eg, YOUR name) []:LIFERAY&lt;br /&gt;Email Address []:&lt;br /&gt;--&lt;br /&gt;A challenge password []:&lt;br /&gt;An optional company name []:&lt;br /&gt;&lt;br /&gt;Irá gerar o ficheiro &lt;i&gt;liferay.csr&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.3 Remoção da pass phrase da chave&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Criar uma cópia da chave&lt;i&gt; liferay.key&lt;/i&gt; e renomeá-la para &lt;i&gt;liferay.key.futebol&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;De seguida executar numa shell Solaris:&lt;br /&gt;&lt;i&gt;#/usr/sfw/bin/openssl &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Introduzir o comando:&lt;br /&gt;&lt;i&gt;rsa -in liferay.key.futebol -out liferay.key&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Introduzir a pass phrase escolhida para a chave privada (RSA Private Key).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;1.4 Gerar um certificado auto-assinado&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Numa shell Solaris:&lt;br /&gt;&lt;i&gt;#/usr/sfw/bin/openssl&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Introduzir o comando:&lt;br /&gt;&lt;i&gt;x509 -req -days 3650 -in liferay.csr -signkey&amp;nbsp; liferay.key -out liferay.crt&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Irá gerar o ficheiro &lt;i&gt;liferay.crt&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;2. Copiar a chave e o certificado para o Apache&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;De seguida executar numa shell Solaris: &lt;br /&gt;&lt;i&gt;# mkdir /etc/apache2/ssl.crt&lt;/i&gt;&lt;br /&gt;&lt;i&gt;# &lt;/i&gt;&lt;i&gt;mkdir /etc/apache2/ssl.key&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;# cp liferay.crt /etc/apache2/ssl.crt/ssl.crt&lt;br /&gt;# cp liferay.key /etc/apache2/ssl.key/ssl.key&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;3. Configurar SSL no Apache&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;No ficheiro &lt;i&gt; /etc/apache2/&lt;/i&gt;&lt;i&gt;ssl.conf&lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Comentar: &lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;#SSLRandomSeed startup builtin&lt;br /&gt;#SSLRandomSeed connect builtin&lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Descomentar:&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;SSLRandomSeed startup file:/dev/urandom 512&lt;br /&gt;SSLRandomSeed connect file:/dev/urandom 512&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Alterar&lt;i&gt;&lt;br /&gt;&lt;virtualhost _default_:443=""&gt; &lt;/virtualhost&gt;&lt;/i&gt;&lt;i&gt;SSLCertificateFile /etc/apache2/ssl.crt/server.crt&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;para &lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;SSLCertificateFile /etc/apache2/ssl.crt/ssl.crt&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alterar&lt;br /&gt;&lt;i&gt;SSLCertificateKeyFile /etc/apache2/ssl.key/server.key&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;para&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;SSLCertificateKeyFile /usr/local/apache/conf/ssl.key/ssl.key&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Alterar&lt;br /&gt;&lt;i&gt;&lt;/i&gt; &lt;br /&gt;&lt;i&gt;&amp;lt;VirtualHost _default_:443&amp;gt;&lt;/i&gt; &lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt; &lt;br /&gt;para&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;VirtualHost *:443&amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;b&gt;4. Activar o SSL no Solaris&lt;/b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Verificar se o SSL está activo&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;Nnuma shell Solaris&lt;i&gt;:&lt;/i&gt;&lt;br /&gt;&lt;i&gt;# svcprop -p httpd/ssl svc:network/http:apache2&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Se &lt;b&gt;false&lt;/b&gt;:&lt;i&gt;&lt;br /&gt;&lt;br /&gt;# svccfg -s http:apache2 setprop httpd/ssl=true&lt;br /&gt;# svcadm refresh http:apache2&lt;br /&gt;# svcprop -p httpd/ssl svc:network/http:apache2&lt;/i&gt;&lt;br /&gt;Deverá agora dar &lt;b&gt;true&lt;/b&gt;&lt;i&gt;&lt;b&gt;.&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;b&gt;5. Restart Apache&lt;/b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Testar&lt;i&gt;&lt;br /&gt;&lt;br /&gt;https://apache.reverse.proxy&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Onde &lt;i&gt;apache.reverse.proxy&lt;/i&gt; é o endereço da máquina onde está instalado o Apache.&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;6. Configuração do Reverse Proxy no Apache&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;No ficheiro http.conf ou noutro que seja incluído:&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;location&gt;&amp;lt;Location / &amp;gt;&lt;br /&gt;&amp;nbsp; ProxyPass http://liferay.location:8080/&lt;br /&gt;&amp;nbsp; ProxyPassReverse http://&lt;/location&gt;&lt;/i&gt;&lt;i&gt;liferay.location&lt;/i&gt;&lt;i&gt;:8080/&lt;/i&gt;&lt;br /&gt;&amp;lt;&lt;i&gt;Location /&lt;/i&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;Onde &lt;i&gt;liferay.location&lt;/i&gt; é o endereço da máquina onde está instalado o Liferay.&lt;br /&gt;&lt;br /&gt;Restart ao Apache &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;7. &lt;b&gt; Configuração do Reverse Proxy no Liferay&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Editar o ficheiro&lt;i&gt;&amp;nbsp; ~/liferay-portal-6.0.6/tomcat-6.0.29/webapps/ROOT/WEB-INF/classes&lt;b&gt;/&lt;/b&gt;&lt;/i&gt;&lt;i&gt;portal-ext.properties&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Acrescentar:&lt;br /&gt;&lt;br /&gt;&lt;i&gt; web.server.http.port=80&lt;br /&gt;web.server.host=&lt;/i&gt;&lt;i&gt;apache.reverse.proxy&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;web.server.https.port=443&lt;br /&gt;web.server.protocol=https&lt;br /&gt;&lt;br /&gt;redirect.url.security.mode=ip&lt;br /&gt;redirect.url.domains.allowed=&lt;br /&gt;redirect.url.ips.allowed=127.0.0.1,LIFERAY_IP_MACHINE,APACHE_REVERSE_PROXY_IP_MACHINE&lt;br /&gt;# Para não criar o esquema de demonstração&lt;br /&gt;schema.run.enabled=true&lt;br /&gt;schema.run.minimal=false&lt;/i&gt;&lt;br /&gt;Restart ao Liferay. &lt;br /&gt;&lt;br /&gt;Testar.&lt;br /&gt;&lt;i&gt;http://&lt;/i&gt;&lt;i&gt;apache.reverse.proxy&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Deverá abrir a página do Liferay.&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;8. Configuração do Reverse Proxy com SSL no Apache&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&amp;lt;Location / &amp;gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;location&gt;&lt;/location&gt;&lt;/i&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp; RewriteEngine On&lt;br /&gt;&amp;nbsp; RewriteCond %{HTTPS} off&lt;br /&gt;&amp;nbsp; RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI}&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&amp;nbsp; ProxyPass http://liferay.location:8080/&lt;br /&gt;&amp;nbsp; ProxyPassReverse http://&lt;/i&gt;&lt;i&gt;liferay.location&lt;/i&gt;&lt;i&gt;:8080/&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;&amp;lt;&lt;i&gt;Location /&lt;/i&gt;&amp;gt;&lt;br /&gt;&lt;br /&gt;Restart ao Apache.&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Testar.&lt;br /&gt;&lt;i&gt;https://&lt;/i&gt;&lt;i&gt;apache.reverse.proxy&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Deverá aparecer a página do Liferay em HTTPS.&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Escrevendo &lt;i&gt;http://&lt;/i&gt;&lt;i&gt;apache.reverse.proxy &lt;/i&gt;dever-se-á ser redireccionado para &lt;i&gt;https://&lt;/i&gt;&lt;i&gt;apache.reverse.proxy&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8428354014560177815?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8428354014560177815/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8428354014560177815' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8428354014560177815'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8428354014560177815'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/colocar-liferay-em-https-com-apache.html' title='Colocar Liferay em HTTPS com Apache Reverse Proxy'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3649702609475283940</id><published>2011-10-07T12:09:00.000+01:00</published><updated>2011-10-07T12:09:34.240+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle service bus'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl'/><title type='text'>Importação de WSDLs no Oracle Service Bus</title><content type='html'>A melhor maneira de evitar problemas na importação de WSDLs (problemas do género classes duplicadas, etc) no OSB é colocar os WSDLs e respectivos XSDs num só zip e usar a ferramenta de &lt;b&gt;Bulk -&amp;gt; Zipped Resources&lt;/b&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3649702609475283940?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3649702609475283940/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3649702609475283940' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3649702609475283940'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3649702609475283940'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/importacao-de-wsdls-no-oracle-service.html' title='Importação de WSDLs no Oracle Service Bus'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2735345729172487500</id><published>2011-10-07T10:01:00.001+01:00</published><updated>2011-10-07T10:06:48.154+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='osb'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle service bus'/><category scheme='http://www.blogger.com/atom/ns#' term='wsdl'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Oracle Service Bus - Gerando correctamente WSDLs</title><content type='html'>Quando o OSB (versão 11.1.1.5.0) não está acessível directamente aos clientes (por detrás de um Reverse Proxy por exemplo), os WSDLs não são gerados correctamente, ficando o endpoint com o hostname da máquina onde está deployed o OSB.&lt;br /&gt;&lt;br /&gt;Isto é uma situação que se deve evitar, pois está-se a expor nomes internos que não devem ser conhecidos fora.&lt;br /&gt;&lt;br /&gt;Esta situação só ocorre se o OSB &lt;b&gt;não estiver &lt;/b&gt;em Cluster.&lt;br /&gt;&lt;br /&gt;Para corrigir o problema efectuar os seguintes passos:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Criar um cluster&lt;/li&gt;&lt;li&gt;Adicionar o servidor do OSB ao cluster&lt;/li&gt;&lt;li&gt;No cluster, na tab &lt;b&gt;HTTP&lt;/b&gt; configurar os campos &lt;b&gt;Frontend Host&lt;/b&gt; e &lt;b&gt;Frontend HTTP Port&lt;/b&gt; para os valores do Reverse Proxy por exemplo&lt;/li&gt;&lt;li&gt;Parar o AdminServer e o servidor do OSB&lt;/li&gt;&lt;li&gt;Editar o ficheiro config.xml conforme indicado a seguir&lt;/li&gt;&lt;li&gt;Restart do Admin Server&lt;/li&gt;&lt;li&gt;Restart do servidor OSB&lt;/li&gt;&lt;li&gt;Verificar a geração de WSDLs&lt;/li&gt;&lt;/ol&gt;Pode-se também recriar o domínio do OSB, configurando o mesmo em cluster, e assim não haverá edição manual de ficheiros. &lt;br /&gt;&lt;br /&gt;Agora a geração já será feita como deve ser.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: large;"&gt;Edição manual do ficheiro &lt;b&gt;config.xml&lt;/b&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Esta edição apenas é necessária se não se quiser recriar o domínio de raiz.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Substituir o nome do servidor do OSB pelo nome do cluster &lt;b&gt;excepto &lt;/b&gt;nos casos seguintes:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;server&amp;gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;lt;name&amp;gt;.....&lt;/li&gt;&lt;li&gt;&amp;lt;jta-migratable-target&amp;gt;&amp;lt;user-preferred-server&amp;gt;....&lt;/li&gt;&lt;li&gt;&amp;lt;server-diagnostic-config&amp;gt;&amp;lt;name&amp;gt;....&lt;/li&gt;&lt;li&gt;&amp;lt;virtual-machine-name&amp;gt;NOME_DO_DOMINIO_.....&amp;lt;/virtual-machine-name&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&amp;lt;/server&amp;gt;&lt;/li&gt;&lt;li&gt;Todos os valores nos vários &amp;lt;jms-server&amp;gt;&lt;/li&gt;&lt;li&gt;Todos os valores em &amp;lt;migratable-target&amp;gt;&lt;/li&gt;&lt;li&gt;Todos os valores nos vários &amp;lt;file-store&amp;gt;&lt;/li&gt;&lt;li&gt;Todos os valores nos vários &amp;lt;jms-system-resource&amp;gt;&lt;/li&gt;&lt;li&gt;Todos os valores nos vários &amp;lt;saf-agent&amp;gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2735345729172487500?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2735345729172487500/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2735345729172487500' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2735345729172487500'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2735345729172487500'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/oracle-service-bus-gerando.html' title='Oracle Service Bus - Gerando correctamente WSDLs'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2079877051517923880</id><published>2011-10-04T14:13:00.000+01:00</published><updated>2011-10-04T14:13:50.569+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='configurações'/><category scheme='http://www.blogger.com/atom/ns#' term='teclas'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Teclas Home, End, etc a funcionar na linha de comandos (bash) em Solaris</title><content type='html'>As teclas home, end em Solaris 10 na shell bash escrevem caracteres esquisitos (~) em fez de executarem a sua função espectável.&lt;br /&gt;&lt;br /&gt;Para corrigir este problema executar os passos seguintes:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Editar o ficheiro &lt;b&gt;.profile&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Adicionar a linha: &lt;b&gt;export INPUTRC=inputrc&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;b&gt;&lt;span style="font-weight: normal;"&gt;Salvar e fechar &lt;/span&gt;&lt;/b&gt;&lt;span style="font-weight: normal;"&gt;o ficheiro&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Criar o ficheiro&lt;b&gt; inputrc&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Adicionar o conteúdo:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;set meta-flag on&lt;br /&gt;set input-meta on&lt;br /&gt;set convert-meta off&lt;br /&gt;set output-meta on&lt;br /&gt;&lt;br /&gt;"\e[1~": beginning-of-line&lt;br /&gt;"\e[4~": end-of-line&lt;br /&gt;"\e[5~": beginning-of-history&lt;br /&gt;"\e[6~": end-of-history&lt;br /&gt;"\e[3~": delete-char&lt;br /&gt;"\e[2~": quoted-insert&lt;br /&gt;"\e[5C": forward-word&lt;br /&gt;"\e[5D": backward-word&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Salvar e fechar o ficheiro&lt;/li&gt;&lt;li&gt;Fazer logout e login&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ol&gt;Solução encontrada em: &lt;a href="http://www.cyberciti.biz/tips/freebsd-how-to-customized-home-del-insert-keys-for-bash-shell.html"&gt;http://www.cyberciti.biz/tips/freebsd-how-to-customized-home-del-insert-keys-for-bash-shell.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2079877051517923880?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2079877051517923880/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2079877051517923880' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2079877051517923880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2079877051517923880'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/teclas-home-end-etc-funcionar-na-linha.html' title='Teclas Home, End, etc a funcionar na linha de comandos (bash) em Solaris'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7154942187343893552</id><published>2011-10-04T11:34:00.001+01:00</published><updated>2011-10-04T14:02:10.684+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Colocar as teclas de cursor a funcionar no vi em Solaris</title><content type='html'>Em Solaris 10, o vi vem com uma funcionalidade muito irritante que é a de não ter a funcionar nem o backspace nem o delete nem as teclas de cursor no modo de edição. As teclas de cursor por exemplo trocam minúsculas por maiúsculas e vice-versa.&lt;br /&gt;&lt;br /&gt;A solução do problema não é difícil, bastando criar um ficheiro e colocar alguns mapeamentos que solucionam o problema.&lt;br /&gt;&lt;br /&gt;Assim, criar na home do utilizador o ficheiro &lt;b&gt;.exrc&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Dentro desse ficheiro colocar os mapeamentos pretendidos.&lt;br /&gt;O conteúdo tem de ser escrito à mão e &lt;b&gt;NÃO PODE SER COPIADO&lt;/b&gt;. Caso contrário não irá funcionar.&lt;br /&gt;Os mapeamentos não podem ter espaços no final, nem pode haver linhas em branco no ficheiro.&lt;br /&gt;&lt;br /&gt;Exemplo de ficheiro &lt;b&gt;.exrc &lt;/b&gt;(&lt;b&gt;NÃO COPIAR. Escrever no ficheiro o conteúdo, conforme instruções mais abaixo&lt;/b&gt;):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OA ^[ka&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OB ^[ja&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OC ^[la&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OD ^[ha&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[[3~ ^[xa&lt;br /&gt;:map! ^? ^[Xa&lt;/span&gt;&lt;br /&gt;Para escrever o conteúdo usar os seguintes comandos (são comandos de controlo, por isso não podem ser copiados): &lt;br /&gt;&lt;br /&gt;^[OA = CTRL-V + Seta-para-cima&lt;br /&gt;^[ka = CTRL-V + ESCAPE + k + a&lt;br /&gt;&lt;br /&gt;^[OB = CTRL-V + Seta-para-baixo&lt;br /&gt;^[ja = CTRL-V + ESCAPE + j + a&lt;br /&gt;&lt;br /&gt;^[OC = CTRL-V + Seta-para-direita &lt;br /&gt;^[la = CTRL-V + ESCAPE + l + a&lt;br /&gt;&lt;br /&gt;&amp;nbsp;^[OD = CTRL-V + Seta-para-esquerda&lt;br /&gt;^[ha = CTRL-V + ESCAPE + h + a&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;^[[3~&lt;/span&gt; = CTRL-V + DELETE&lt;br /&gt;&amp;nbsp;^[xa = CTRL-V + ESCAPE + x + a&lt;br /&gt;&lt;br /&gt;^H = CTRL-V + BACKSPACE&lt;br /&gt;&amp;nbsp;^[Xa = CTRL-V + ESCAPE + x + a&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Explicação dos mapeamentos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OA ^[ka&lt;/span&gt; -&amp;gt; Coloca a seta para cima a funcionar em modo de edição&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OB ^[ja&lt;/span&gt;-&amp;gt; Coloca a seta para baixo a funcionar em modo de edição&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OC ^[la&lt;/span&gt;-&amp;gt; Coloca a seta para a direita a funcionar em modo de edição&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[OD ^[ha&lt;/span&gt;-&amp;gt; Coloca a seta para a esquerda a funcionar em modo de edição&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^[[3~ ^[xa&lt;/span&gt;-&amp;gt; Coloca o delete a funcionar em modo de edição, apagando o carácter seleccionado pelo cursor&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;:map! ^? ^[Xa&lt;/span&gt;-&amp;gt; Coloca o backspace a funcionar em modo de edição, apagando o carácter à esquerda do cursor&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Esta foi uma configuração que escolhi.&lt;br /&gt;Pode-se adaptar esta configuração usando outros comandos do vi, e acrescentando mais mapeamentos se necessário.&lt;br /&gt;&lt;br /&gt;Documentação vi:&lt;a href="http://hea-www.harvard.edu/%7Efine/Tech/vi.html"&gt; http://hea-www.harvard.edu/~fine/Tech/vi.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Onde encontrei a solução: &lt;a href="http://www.jonathanlaliberte.com/2009/12/01/fix-arrow-keys-in-vi-on-solaris/comment-page-1/#comment-3548"&gt;http://www.jonathanlaliberte.com/2009/12/01/fix-arrow-keys-in-vi-on-solaris/comment-page-1/#comment-3548&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7154942187343893552?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7154942187343893552/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7154942187343893552' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7154942187343893552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7154942187343893552'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/colocar-as-teclas-de-cursor-funcionar.html' title='Colocar as teclas de cursor a funcionar no vi em Solaris'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2190350082384705133</id><published>2011-10-03T19:05:00.000+01:00</published><updated>2011-10-03T19:05:27.992+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>./dbstart: test: argument expected</title><content type='html'>Ao executar o comando dbstart para levantar uma base de dados Oracle se ocorrer o erro:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;dbstart: test: argument expected&lt;/div&gt;&lt;br /&gt;então, por incrível que pareça, o problema está no início do script.&lt;br /&gt;&lt;br /&gt;Substiruir&lt;br /&gt;&lt;br /&gt;#!/bin/sh&lt;br /&gt;&lt;br /&gt;por:&lt;br /&gt;&lt;br /&gt;#!/bin/bash&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Fazer o mesmo no dbshut.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2190350082384705133?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2190350082384705133/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2190350082384705133' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2190350082384705133'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2190350082384705133'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/dbstart-test-argument-expected.html' title='./dbstart: test: argument expected'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8271545278823572184</id><published>2011-10-03T17:01:00.004+01:00</published><updated>2011-10-03T19:37:26.091+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='arranque'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Pós-instalação de Base de Dados Oracle 11g em Solaris</title><content type='html'>Depois de instalada a base de dados em Solaris, é necessário configurar o ambiente para se poder aceder à base de dados em condições.&lt;br /&gt;&lt;br /&gt;Assim como utilizador que vai correr a base de dados (neste caso &lt;b&gt;oracle&lt;/b&gt;):&lt;br /&gt;&lt;br /&gt;Editar o ficheiro &lt;b&gt;.profile &lt;/b&gt;(caso se use bash)&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ORACLE_SID=SID_BASE_DADOS&lt;br /&gt;export ORACLE_SID&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ORACLE_HOME=RAIZ_DO_PRODUTO(por defeito: /u01/app/oracle/product/11.2.0/dbhome_1)&lt;br /&gt;export ORACLE_HOME&lt;br /&gt;&lt;br /&gt;ORAENV_ASK=NO&lt;br /&gt;export ORAENV_ASK&lt;br /&gt;&lt;br /&gt;export PATH=$PATH:/usr/local/bin&lt;br /&gt;. /usr/local/bin/oraenv&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sair e voltar a entrar para assumir as alterações no perfil.&lt;br /&gt;&lt;br /&gt;Executar:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;sqlplus / AS SYSDBA&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;@?/rdbms/admin/utlrp.sql&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Fora do SQLPLUS, na linha de comandos executar:&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;$ORACLE_HOME/bin/genclntst&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;Editar o ficheiro &lt;b&gt;/var/opt/oracle/oratab&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Verificar se o conteúdo termina com&lt;b&gt; Y&lt;/b&gt;. Se terminar com &lt;b&gt;N&lt;/b&gt; então a base de dados não arranca automaticamente.&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Ex:&lt;br /&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-size: small;"&gt;oracle_sid:/u01/app/oracle/product/11.2.0/dbhome_1:Y&lt;/span&gt;&lt;/pre&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para a base de dados arrancar e terminar automaticamente a cada reboot do servidor, criar como &lt;b&gt;root&lt;/b&gt; o ficheiro&lt;b&gt; /etc/init.d/dbora&lt;/b&gt; com o conteúdo seguinte:&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;#! /bin/sh  -x&lt;br /&gt;#&lt;br /&gt;# Change the value of ORACLE_HOME to specify the correct Oracle home&lt;br /&gt;# directory for your installation.&lt;br /&gt;&lt;br /&gt;ORACLE_HOME=/u01/app/oracle/product/11.1.0/db_1&lt;br /&gt;#&lt;br /&gt;# Change the value of ORACLE to the login name of the&lt;br /&gt;# oracle owner at your site.&lt;br /&gt;#&lt;br /&gt;ORACLE=oracle&lt;br /&gt;&lt;br /&gt;PATH=${PATH}:$ORACLE_HOME/bin&lt;br /&gt;HOST=`hostname`&lt;br /&gt;PLATFORM=`uname`&lt;br /&gt;export ORACLE_HOME PATH&lt;br /&gt;&lt;br /&gt;case $1 in&lt;br /&gt;'start')&lt;br /&gt;         su - oracle -c "$ORACLE_HOME/bin/dbstart $ORACLE_HOME" &amp;amp;&lt;br /&gt;        ;;&lt;br /&gt;'stop')&lt;br /&gt;         su - oracle -c "$ORACLE_HOME/bin/dbshut $ORACLE_HOME" &amp;amp;&lt;br /&gt;        ;;&lt;br /&gt;*)&lt;br /&gt;        echo "usage: $0 {start|stop}"&lt;br /&gt;        exit&lt;br /&gt;        ;;&lt;br /&gt;esac&lt;br /&gt;#&lt;br /&gt;exit&lt;/pre&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&lt;/pre&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Dar as seguintes permissões ao ficheiro dbora &lt;/pre&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/pre&gt;&lt;pre class="oac_no_warn" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;chgrp GRUPO_ORACLE dbora&lt;br /&gt;chmod 750 dbora&lt;/pre&gt;&lt;br /&gt;Depois de criado o ficheiro executar:&lt;br /&gt;&lt;br /&gt;&lt;pre style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;ln -s /etc/init.d/dbora /etc/rc0.d/K01dbora&lt;br /&gt;ln -s /etc/init.d/dbora /etc/rc3.d/S99dbora&lt;/pre&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;/div&gt;&lt;br /&gt;Mais detalhes &lt;a href="http://www.dbspecialists.com/files/presentations/oracle10gsolaris.html#complete"&gt;aqui&lt;/a&gt; e &lt;a href="http://download.oracle.com/docs/cd/B28359_01/server.111/b32009/strt_stp.htm#BABGDGHF"&gt;aqui&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8271545278823572184?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8271545278823572184/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8271545278823572184' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8271545278823572184'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8271545278823572184'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/pos-instalacao-de-base-de-dados-oracle.html' title='Pós-instalação de Base de Dados Oracle 11g em Solaris'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4402331842531393714</id><published>2011-10-03T15:11:00.000+01:00</published><updated>2011-10-03T15:11:10.816+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='prompt'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='root'/><title type='text'>Mudar prompt de root em Solaris 10</title><content type='html'>Ao contrario do que muitos rumores dizem, já não há problema em mudar a prompt de root em Solaris 10. Antes desta versão a shell que vinha por defeito não era linkada, o que trazia (segundo dizem) segurança acrescida em caso de problemas. Contudo a partir da versão 10 a shell por defeito já é linkada e por isso é indiferente se se muda a shell ou não.&lt;br /&gt;&lt;br /&gt;Então os passos para mudar de shell de root:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;&amp;nbsp;/usr/ucb/vipw -&amp;gt; Alterar a shell para, por exemplo: /bin/bash&lt;/li&gt;&lt;li&gt;Sair e voltar a entrar da sessão&lt;/li&gt;&lt;li&gt;Editar o ficheiro .profile e acrescentar uma linha para ter a prompt como se quer. Exemplo: PS1="[\H \w] $ "&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4402331842531393714?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4402331842531393714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4402331842531393714' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4402331842531393714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4402331842531393714'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/mudar-prompt-de-root-em-solaris-10.html' title='Mudar prompt de root em Solaris 10'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2548161459264111257</id><published>2011-10-03T14:22:00.003+01:00</published><updated>2011-10-03T14:25:47.952+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='bash'/><category scheme='http://www.blogger.com/atom/ns#' term='prompt'/><title type='text'>Configuração da prompt de uma shell Bash</title><content type='html'>&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;&lt;/span&gt;&lt;/div&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;Para alterar a prompt de uma shell Bash, basta configurar a variável &lt;b&gt;PS1 &lt;/b&gt;com um&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;formato, usando um ou mais caracteres especiais:&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt; &lt;br /&gt;              \a     an ASCII bell character (07)&lt;br /&gt;              \d     the date  in  "Weekday  Month  Date"  format&lt;br /&gt;                     (e.g., "Tue May 26")&lt;br /&gt;              \e     an ASCII escape character (033)&lt;br /&gt;              \h     the hostname up to the first `.'&lt;br /&gt;              \H     the hostname&lt;br /&gt;              \j     the  number of jobs currently managed by the&lt;br /&gt;                     shell&lt;br /&gt;              \l     the basename of the shell's terminal  device&lt;br /&gt;                     name&lt;br /&gt;              \n     newline&lt;br /&gt;              \r     carriage return&lt;br /&gt;              \s     the  name  of  the shell, the basename of $0&lt;br /&gt;                     (the portion following the final slash)&lt;br /&gt;              \t     the current time in 24-hour HH:MM:SS format&lt;br /&gt;              \T     the current time in 12-hour HH:MM:SS format&lt;br /&gt;              \@     the current time in 12-hour am/pm format&lt;br /&gt;              \u     the username of the current user&lt;br /&gt;              \v     the version of bash (e.g., 2.00)&lt;br /&gt;              \V     the release of bash,  version  +  patchlevel&lt;br /&gt;                     (e.g., 2.00.0)&lt;br /&gt;              \w     the current working directory&lt;br /&gt;              \W     the  basename  of the current working direc­&lt;br /&gt;                     tory&lt;br /&gt;              \!     the history number of this command&lt;br /&gt;              \#     the command number of this command&lt;br /&gt;              \$     if the effective UID is 0, a #, otherwise  a&lt;br /&gt;                     $&lt;br /&gt;              \nnn   the  character  corresponding  to  the octal&lt;br /&gt;                     number nnn&lt;br /&gt;              \\     a backslash&lt;br /&gt;              \[     begin a sequence of non-printing characters,&lt;br /&gt;                     which could be used to embed a terminal con­&lt;br /&gt;                     trol sequence into the prompt&lt;br /&gt;              \]     end a sequence of non-printing characters&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;Exemplo: &lt;b&gt;PS1="[\H \w] $" &lt;/b&gt;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;&amp;nbsp;&lt;/span&gt;&lt;/pre&gt;&lt;pre class="SCREEN" style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="color: black; font-size: small;"&gt;&amp;nbsp;Mais detalhes em &lt;a href="http://www.cyberciti.biz/tips/howto-linux-unix-bash-shell-setup-prompt.html#comment-174596"&gt;aqui&lt;/a&gt;.&lt;/span&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2548161459264111257?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2548161459264111257/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2548161459264111257' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2548161459264111257'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2548161459264111257'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/10/configuracao-da-prompt-de-uma-shell.html' title='Configuração da prompt de uma shell Bash'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1465291934295832764</id><published>2011-09-28T10:54:00.000+01:00</published><updated>2011-09-28T10:54:53.054+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><category scheme='http://www.blogger.com/atom/ns#' term='vSphere'/><title type='text'>Criar um tunel para uma ligação VMWare Client (vSphere)</title><content type='html'>Com o putty, numa ligação com acesso à máquina destino criar um tunel com as seguintes caractrísticas:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Source port 127.0.0.2:443&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;Destination &lt;vsphere.server.ip&gt;:443&lt;/vsphere.server.ip&gt;&lt;/div&gt;&lt;div style="height: 8pt; min-height: 8pt; padding: 0px;"&gt;&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;Na ligação com o Cliente vSphere indicar:&lt;br /&gt;&lt;div style="height: 8pt; min-height: 8pt; padding: 0px;"&gt; &lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;127.0.0.2&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;user&lt;/div&gt;&lt;div style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;password&lt;/div&gt;&lt;br /&gt;Esta é a maneira mais fácil de criar um túnel para um servidor vSphere. &lt;br /&gt;&lt;br /&gt;Referência: &lt;a href="http://communities.vmware.com/message/1469203"&gt;http://communities.vmware.com/message/1469203&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1465291934295832764?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1465291934295832764/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1465291934295832764' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1465291934295832764'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1465291934295832764'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/criar-um-tunel-para-uma-ligacao-vmware.html' title='Criar um tunel para uma ligação VMWare Client (vSphere)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-637478198481913478</id><published>2011-09-21T14:15:00.000+01:00</published><updated>2011-09-21T14:15:29.519+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SimpleDateFormat'/><category scheme='http://www.blogger.com/atom/ns#' term='exemplo'/><title type='text'>Problemas no SimpleDateFormat</title><content type='html'>O uso da classe SimpleDateFormat é muito frequente para parsar datas que estão em formato String e transformá-las para Date. É uma classe muito útil, e que resolve só por si toda uma série de problema de conversão de datas.&lt;br /&gt;&lt;br /&gt;Contudo, quando se cria uma instância desta classe para fazer a formatação, há um campo desta mesma classe que por defeito vem a true. Este campo é a propriedade Lenient. Esta propriedade, quando a true permite à instância aplicar uma série de heurísticas na formatação e assim tentar efectuar o parse. A aplicação destas heurísticas pode, de vez em quando, indicar resultados incorrectos como no exemplo mais abaixo.&lt;br /&gt;&lt;br /&gt;Usando a máscara "yyyy/MM/dd" no SimpleDateFormat e efectuando um parse a uma String no formato "dd/MM/yyyy", o SimpleDateFormat irá indicar que a data é válida, quando era expectável que desse uma excepção. Além de formatar a data, o SimpleDateFormat devolverá uma data completamente diferente da original (objecto Date).&lt;br /&gt;&lt;br /&gt;Exemplo INVÁLIDO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDateFormat dateFormat = new SimpleDateFormat(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "yyyy/MM/dd");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dateFormat.parse("12/12/1233");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ParseException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("12/12/1233 Invalida");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dateFormat.parse("1212/12/12");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ParseException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("1212/12/12 Invalida");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;Ao contrário do que seria de esperar o resultado é:&lt;br /&gt;&lt;br /&gt;Thu Apr 16 00:00:00 GMT 16&lt;br /&gt;Wed Dec 12 00:00:00 GMT 1212&lt;br /&gt;&lt;br /&gt;Em primeiro lugar deveria ter ocorrido uma mensagem a dizer:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;12/12/1233 Invalida&lt;br /&gt;&lt;br /&gt;pois "12/12/1233" não está no formato esperado ("yyyy/MM/dd").&lt;br /&gt;&lt;br /&gt;Em segundo lugar:&lt;br /&gt;&lt;br /&gt;A data Thu Apr 16 00:00:00 GMT 16 nada tem a ver com "12/12/1233".&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Para corrigir o problema, é necessário indicar ao SimpleDateFormat para não aplicar heurísticas. Isso é feito usando o método setLenient(false). Fazendo isto o resultado já será o expectável.&lt;br /&gt;&lt;br /&gt;Exemplo VÁLIDO&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; SimpleDateFormat dateFormat = new SimpleDateFormat(&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; "yyyy/MM/dd");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dateFormat.setLenient(false);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(dateFormat.parse("12/12/1233"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ParseException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("12/12/1233 Invalida");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; try {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println(dateFormat.parse("1212/12/12"));&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; } catch (ParseException ex) {&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; System.out.println("1212/12/12 Invalida");&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br /&gt;&lt;br /&gt;O resultado é:&lt;br /&gt;&lt;br /&gt;12/12/1233 Invalida&lt;br /&gt;Wed Dec 12 00:00:00 GMT 1212&lt;br /&gt;&lt;br /&gt;Como esperado.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-637478198481913478?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/637478198481913478/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=637478198481913478' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/637478198481913478'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/637478198481913478'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/problemas-no-simpledateformat.html' title='Problemas no SimpleDateFormat'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4872574600114878791</id><published>2011-09-12T22:59:00.000+01:00</published><updated>2011-09-12T22:59:12.109+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jogos'/><category scheme='http://www.blogger.com/atom/ns#' term='wii'/><category scheme='http://www.blogger.com/atom/ns#' term='puzzle quest'/><title type='text'>Wii Puzzle Quest - "Resolvedor de Puzzles"</title><content type='html'>Se alguém tem o jogo Puzzle Quest para Wii (1ª versão do jogo de 2007) tem &lt;a href="http://www.divshare.com/download/15707947-91f"&gt;aqui &lt;/a&gt;disponível uma aplicação que permite resolver os puzzles.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4872574600114878791?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4872574600114878791/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4872574600114878791' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4872574600114878791'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4872574600114878791'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/wii-puzzle-quest-resolvedor-de-puzzles.html' title='Wii Puzzle Quest - &quot;Resolvedor de Puzzles&quot;'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1245417640729244997</id><published>2011-09-08T09:41:00.002+01:00</published><updated>2011-09-08T09:41:36.294+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='vi'/><title type='text'>Forçar a gravação de um ficheiro em VI</title><content type='html'>Para forçar a escrita de um ficheiro apenas de leitura em VI, usar o comando : &lt;b&gt;w!&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1245417640729244997?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1245417640729244997/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1245417640729244997' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1245417640729244997'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1245417640729244997'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/forcar-gravacao-de-um-ficheiro-em-vi.html' title='Forçar a gravação de um ficheiro em VI'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5089108024003192143</id><published>2011-09-01T11:13:00.000+01:00</published><updated>2011-09-01T11:13:58.706+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='base de dados'/><category scheme='http://www.blogger.com/atom/ns#' term='11g'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Instalação da Base de Dados Oracle 11g em Solaris</title><content type='html'>Ao verificar os pré-requisitos de instalação, o instalador da base de dados poderá dizer que o patch &lt;b&gt;12486-15 &lt;/b&gt;(ou outro parecido)&lt;b&gt; &lt;/b&gt;necessita de ser instalado. De acordo com a nota&lt;strong&gt;&lt;span style="font-family: Times New Roman,serif;"&gt;&lt;span style="font-size: small;"&gt; &lt;a href="https://support.oracle.com/CSP/main/article?cmd=show&amp;amp;type=NOT&amp;amp;doctype=PROBLEM&amp;amp;id=969497.1"&gt;ID969497.1&lt;/a&gt; &lt;span style="font-weight: normal;"&gt;este patch pode ser ignorado desde que não se use o pré-compilador Pro*C&lt;/span&gt;.&lt;/span&gt;&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5089108024003192143?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5089108024003192143/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5089108024003192143' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5089108024003192143'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5089108024003192143'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/instalacao-da-base-de-dados-oracle-11g.html' title='Instalação da Base de Dados Oracle 11g em Solaris'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5525116611752973585</id><published>2011-09-01T09:48:00.000+01:00</published><updated>2011-09-01T09:48:42.094+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='erros'/><category scheme='http://www.blogger.com/atom/ns#' term='xming'/><category scheme='http://www.blogger.com/atom/ns#' term='solaris'/><title type='text'>Solaris - "Cannot convert string "fixed" to type FontStruct"</title><content type='html'>Quando se tenta redireccionar o DISPLAY em Solaris para um computador remoto, podem ocorrer erros do género:&lt;i&gt; "Cannot convert string "fixed" to type FontStruct" &lt;/i&gt;quando se usa o &lt;i&gt;xming&lt;/i&gt;&amp;nbsp; no computador remoto.&lt;br /&gt;&lt;br /&gt;A solução, depois de saber, é fácil:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;ol&gt;&lt;ol&gt;&lt;li&gt;&lt;span style="font-family: Times New Roman,serif;"&gt;&lt;span style="font-size: small;"&gt;Instalar 			as &lt;a href="http://sourceforge.net/projects/xming/files/"&gt;fontes&lt;/a&gt;&lt;i&gt; xming&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-family: Times New Roman,serif;"&gt;&lt;span style="font-size: small;"&gt;Adicionar 			o parâmetro -ac no arranque do &lt;i&gt;xming #Se nos logs do xming aparecer que a ligação foi recusada&lt;/i&gt; &lt;/span&gt;&lt;/span&gt; 			&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;/ol&gt;&lt;/ol&gt;Pode acontecer dar um aviso quando se corre o programa que requer o display remoto, mas pode ser ignorado.&lt;br /&gt;ex:&amp;nbsp; &lt;i&gt;Warning: Cannot convert string "-monotype-arial-regular-r-normal--*-140-*-*-p-*-iso8859-15" to type FontStruct&lt;/i&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5525116611752973585?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5525116611752973585/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5525116611752973585' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5525116611752973585'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5525116611752973585'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/09/solaris-cannot-convert-string-fixed-to.html' title='Solaris - &quot;Cannot convert string &quot;fixed&quot; to type FontStruct&quot;'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-475854669852982302</id><published>2011-08-04T11:23:00.000+01:00</published><updated>2011-08-04T11:23:34.086+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='design patterns'/><title type='text'>Java Design Patterns (Padrões de Desenho Java)</title><content type='html'>Alguns links úteis que falam de modo prático sobre o tema &lt;b&gt;Java Design Patterns&lt;/b&gt;:&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://en.wikibooks.org/w/index.php?title=Java_Programming/Design_Patterns"&gt;http://en.wikibooks.org/w/index.php?title=Java_Programming/Design_Patterns&lt;/a&gt; - exemplos práticos&lt;/li&gt;&lt;li&gt;&lt;a href="http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns"&gt;http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns&lt;/a&gt; - exemplos de aplicação dos padrões na API Java&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.javacamp.org/designPattern/"&gt;http://www.javacamp.org/designPattern/&lt;/a&gt; - Detalhe sobre cada padrão com exemplos&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.leocrawford.org.uk/work/jcea/part1/patterns.html"&gt;http://www.leocrawford.org.uk/work/jcea/part1/patterns.html&lt;/a&gt; - Sem exemplos em Java mas com boa explicação teórica&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-475854669852982302?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/475854669852982302/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=475854669852982302' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/475854669852982302'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/475854669852982302'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/08/java-design-patterns-padroes-de-desenho.html' title='Java Design Patterns (Padrões de Desenho Java)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5604103978601471366</id><published>2011-07-30T11:08:00.899+01:00</published><updated>2011-10-10T09:54:53.817+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='certificacao'/><category scheme='http://www.blogger.com/atom/ns#' term='ocp'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Conjunto de Notas Usadas para a Certificação OCPJP 6 (1Z0-851)</title><content type='html'>Deixo aqui um conjunto de notas que poderão vir a ser úteis para quem vier a tirar a certificação &lt;b&gt;OCPJP6 - Oracle Certified Professional Java Programmer 6 &lt;/b&gt;(&lt;b&gt;exame 1Z0-851&lt;/b&gt;)&lt;b&gt;. &lt;/b&gt;Esta certificação era conhecida como &lt;b&gt;SCJP6.&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Estas notas não são exaustivas e não são o suficiente para passar o exame. Há que estudar bastante para lá chegar. Obviamente que os que programam em Java à bastante tempo estão em significativa vantagem para fazer o exame.&lt;br /&gt;&lt;br /&gt;Alguns pontos são básicos, outros mais complexos, mas todos servem para reforçar alguns aspectos que na utilização diária passam despercebidos. Parte dos títulos das notas estão em inglês pois são de uso comum na comunidade e não faz sentido traduzir as mesmas, pois o exame é em inglês.&lt;br /&gt;&lt;br /&gt;Antes de mais recomendo vivamente o livro&lt;b&gt;&lt;b&gt; &lt;a href="http://www.bookdepository.co.uk/SCJP-Sun-Certified-Programmer-for-Java-6-Study-Guide-Exam-310-065-Katherine-Sierra/9780071591065"&gt;SCJP Sun Certified Programmer for Java 6 Study Guide&lt;/a&gt;&lt;/b&gt;&lt;/b&gt;&lt;br /&gt;que serve tanto para a certificação &lt;b&gt;OCPJP6&lt;/b&gt; como para a &lt;b&gt;OCMJ6D - Oracle Certified Master, Java SE 6 Developer&lt;/b&gt; (ex-&lt;b&gt;SCJD6&lt;/b&gt;).&lt;br /&gt;&lt;br /&gt;E sem mais demoras as notas de estudo.&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;b&gt;Identificadores legais&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;todos os começados por letras&lt;/li&gt;&lt;li&gt;$ (dólar)&lt;/li&gt;&lt;li&gt;_ (sublinhado)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Palavras reservadas&lt;/b&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;const&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;goto&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;native&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;strictfp&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;assert&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;enum&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;há mais...&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;strictfp&lt;/b&gt;: Pode ser usada numa &lt;u&gt;classe &lt;/u&gt;ou &lt;u&gt;método&lt;/u&gt;. Se uma classe for marcada como strictfp, então qualquer método na classe irá ser conforme as regras do standard &lt;i&gt;IEEE 754&lt;/i&gt; para vírgulas flutuantes e respectivas operações. Se não for usado, então as vírgulas flutuantes e respectivas operações são dependentes da plataforma. Pode-se marcar apenas um método como sendo &lt;b&gt;strictfp&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;native&lt;/b&gt;: apenas pode ser aplicado a métodos, e a sua declaração é semelhante a um método &lt;b&gt;abstract&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Não há conflitos possíveis entre&lt;/u&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Nomes de classes&lt;/li&gt;&lt;li&gt;Type parameter placeholders&lt;/li&gt;&lt;li&gt;Identificadores de variáveis&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;JavaBeans property naming rules:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;As assinaturas dos métodos&lt;b&gt; &lt;/b&gt;&lt;i&gt;setter&lt;/i&gt; têm de ser &lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;public&lt;/b&gt;&lt;/li&gt;&lt;li&gt;retornar &lt;b&gt;void&lt;/b&gt;&lt;/li&gt;&lt;li&gt;ter um argumento que representa o tipo da propriedade&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;As assinaturas dos métodos &lt;i&gt;getter&lt;/i&gt; têm de ser&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;public&lt;/b&gt;&lt;/li&gt;&lt;li&gt;não têm argumentos de entrada&lt;/li&gt;&lt;li&gt; tipo de retorno igual ao tipo de argumento do método &lt;i&gt;setter&lt;/i&gt; para essa propriedade&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;JavaBeans listener naming rules&lt;/b&gt;: &lt;br /&gt;&lt;ul&gt;&lt;li&gt;Os nomes dos métodos dos listeners usados para "&lt;i&gt;registar&lt;/i&gt;" um listener com uma fonte de evento tem de usar o prefixo &lt;b&gt;add, &lt;/b&gt;seguido do tipo de listener [ex: &lt;i&gt;addActionListener(ActionListener al)&lt;/i&gt;]&lt;/li&gt;&lt;li&gt;As regas para remover ("&lt;i&gt;desregistar&lt;/i&gt;") são iguais ás do &lt;b&gt;add&lt;/b&gt; excepto que o prefixo é &lt;b&gt;remove &lt;/b&gt;[ex: &lt;i&gt;removeMyListener(MyListener m)&lt;/i&gt;]&lt;/li&gt;&lt;li&gt;O tipo de listener a adicionar ou remover tem de ser passado como argumento do método&lt;/li&gt;&lt;li&gt;Os nomes dos métodos do listener têm de terminar com a palavra "&lt;b&gt;Listener&lt;/b&gt;"&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Source file declaration rules:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pode haver apenas uma classe pública no ficheiro fonte&lt;/li&gt;&lt;li&gt;Pode haver mais do que uma classe não pública num ficheiro fonte&lt;/li&gt;&lt;li&gt;Num ficheiro sem classes públicas, o nome do ficheiro pode ser diferente de quaisquer classes nele contidas&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Modificadores de acesso (visibilidade)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt;       &lt;th&gt;&lt;br /&gt;&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;Qualquer classe no mesmo pacote&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;Qualquer classe (não subclasse) fora do pacote&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;Própria classe&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;Subclasse no mesmo pacote&lt;/th&gt;       &lt;th&gt;&lt;br /&gt;Subclasse pacote diferente&lt;/th&gt;       &lt;/tr&gt;&lt;/tbody&gt;&lt;tfoot&gt;&lt;tr&gt;             &lt;td colspan="6" style="text-align: center;"&gt;&lt;i&gt;* Através de herança&lt;/i&gt;&lt;/td&gt;          &lt;/tr&gt;&lt;/tfoot&gt;        &lt;tbody&gt;&lt;tr&gt;       &lt;td&gt;default&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;public&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;private&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;     &lt;/tr&gt;&lt;tr&gt;       &lt;td&gt;protected&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: red; text-align: center;"&gt;NA&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK&lt;/td&gt;      &lt;td style="background-color: lime; text-align: center;"&gt;OK (*)&lt;/td&gt;     &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;O modificador de acesso &lt;b&gt;protected&lt;/b&gt;&lt;b&gt; &lt;/b&gt;tem um efeito nas classes que pertençam a pacotes diferentes da superclasse, que é estes serem visíveis &lt;u&gt;apenas através de herança&lt;/u&gt;. Isto é, se uma subclasse que esteja num pacote diferente da superclasse instanciar a superclasse e através desta referência tentar aceder a um membro &lt;b&gt;protected, &lt;/b&gt;&lt;u&gt;irá surgir um erro de compilação&lt;/u&gt;. &lt;br /&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Declaração de Interfaces:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Todos os métodos declarados numa interface são automaticamente:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;public&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;abstract&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;e estes modificadores podem ser omitidos total ou parcialmente. Só estes são permitidos!&lt;br /&gt;&lt;br /&gt;Todas as variáveis definidas numa interface têm de ser:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;public&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;static&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; final&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;ou seja, apenas é permitida a declaração de constantes. Não é preciso usar os modificadores. Podem ser omitidos ou usados intercaladamente.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Encapsulation&lt;/b&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Protecção dos dados (com modificadores de acesso)&lt;/li&gt;&lt;li&gt;Proteger as variáveis de instância&lt;/li&gt;&lt;li&gt;Assessores públicos ao invés de acesso directo a variáveis de instância (usando a metodologia dos Javabeans)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Variable argument list (var-args)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Uso&lt;/u&gt;&lt;b&gt;:&amp;nbsp; &lt;/b&gt;&lt;i&gt;tipo... variável&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Só pode existir um var-arg na assinatura de um método e o var-arg tem de ser o último parâmetro.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Intervalos para os primitivos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Regra geral para intervalos&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Positivos: 2&lt;sup&gt;(nº bits -1)&lt;/sup&gt; - 1&lt;br /&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; Negativos: -2 &lt;sup&gt;(nº bits -1)&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;&lt;br /&gt;Tipo&lt;/th&gt; &lt;th&gt;&lt;br /&gt;Bits&lt;/th&gt; &lt;th&gt;&lt;br /&gt;Intervalo Menor&lt;/th&gt; &lt;th&gt;&lt;br /&gt;Intervalo Maior&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;byte&lt;/td&gt;&lt;td&gt;8&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;7&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;2&lt;sup&gt;7&lt;/sup&gt; - 1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;short&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;15&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;2&lt;sup&gt;15&lt;/sup&gt; - 1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;int&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;31&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;2&lt;sup&gt;31&lt;/sup&gt; - 1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;long&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;-2&lt;sup&gt;63&lt;/sup&gt;&lt;/td&gt;&lt;td&gt;2&lt;sup&gt;53&lt;/sup&gt; - 1&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;float&lt;/td&gt;&lt;td&gt;32&lt;/td&gt;&lt;td&gt;NA&lt;/td&gt;&lt;td&gt;NA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;double&lt;/td&gt;&lt;td&gt;64&lt;/td&gt;&lt;td&gt;NA&lt;/td&gt;&lt;td&gt;NA&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt; &lt;td&gt;char&lt;/td&gt;&lt;td&gt;16&lt;/td&gt;&lt;td&gt;NA&lt;/td&gt;&lt;td&gt;2&lt;sup&gt;16&lt;/sup&gt; - 1 (sem sinal)&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;O tipo &lt;b&gt;char &lt;/b&gt;é representado em &lt;b&gt;Unicode&lt;/b&gt;. Pode-se indicar o valor do carácter directamente em unicode. ex: &lt;b&gt;\uxxxx &lt;/b&gt;ao invés de representar o carácter directamente. Cada carácter numa &lt;b&gt;String&lt;/b&gt; é representado como um &lt;b&gt;char&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;O tipo &lt;b&gt;double&lt;/b&gt; é a representação por defeito para números de vírgula flutuante. Podem opcionalmente ser terminados em &lt;b&gt;D&lt;/b&gt; ou &lt;b&gt;d&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;O tipo &lt;b&gt;float&lt;/b&gt; tem de ter &lt;b&gt;F&lt;/b&gt; ou &lt;b&gt;f&lt;/b&gt; na terminação.&lt;br /&gt;&lt;br /&gt;Um literal inteiro é sempre um &lt;b&gt;int&lt;/b&gt; implicitamente&lt;br /&gt;&lt;br /&gt;&lt;u&gt; O resultado de uma expressão envolvendo qualquer coisa do tamanho int ou inferior é sempre int.&lt;/u&gt; Por exemplo: a soma de dois &lt;b&gt;byte&lt;/b&gt; é sempre um int.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Modificadores possíveis em variáveis e métodos&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;thead&gt;&lt;tr&gt; &lt;th&gt;Variáveis Locais e Method Local Inner Classes&lt;/th&gt; &lt;th&gt;Variáveis Não Locais&lt;/th&gt; &lt;th&gt;Métodos e Inner Classes&lt;/th&gt; &lt;/tr&gt;&lt;/thead&gt; &lt;tfoot&gt;&lt;tr&gt; &lt;th colspan="3" style="text-align: left;"&gt;&lt;br /&gt;&lt;sup style="font-weight: normal;"&gt;1&lt;/sup&gt;&lt;span style="font-weight: normal;"&gt;- Não aplicável a &lt;/span&gt;Inner Classes&lt;br /&gt;&lt;sup style="font-weight: normal;"&gt;2&lt;/sup&gt;&lt;span style="font-weight: normal;"&gt; - Só aplicável a&lt;/span&gt; Method Local Inner Classes&lt;/th&gt; &lt;/tr&gt;&lt;/tfoot&gt; &lt;tbody&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;final&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;abstract &lt;/b&gt;&lt;sup&gt;2&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;final&lt;/b&gt;&lt;br /&gt;&lt;b&gt;public&lt;/b&gt;&lt;br /&gt;&lt;b&gt;protected&lt;/b&gt;&lt;br /&gt;&lt;b&gt;static&lt;/b&gt;&lt;br /&gt;&lt;b&gt;transient&lt;/b&gt;&lt;br /&gt;&lt;b&gt;volatile&amp;nbsp;&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp; &lt;/b&gt;&lt;/td&gt; &lt;td&gt;&lt;b&gt;final&lt;/b&gt;&lt;br /&gt;&lt;b&gt;public&lt;/b&gt; &lt;br /&gt;&lt;b&gt;protected&lt;/b&gt; &lt;br /&gt;&lt;b&gt;private&lt;/b&gt;&lt;br /&gt;&lt;b&gt;static&lt;/b&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;abstract&lt;/b&gt;&lt;br /&gt;&lt;b&gt;synchronized&lt;/b&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;br /&gt;&lt;b&gt;strictfp&lt;/b&gt;&lt;br /&gt;&lt;b&gt;native&lt;/b&gt;&lt;sup&gt;1&lt;/sup&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;Ao contrário das variáveis não locais, as variáveis locais &lt;u&gt;não têm inicializações por defeito&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;A inicialização de uma variável &lt;b&gt;final&lt;/b&gt; tem de ocorrer antes do construtor(es) terminar(em). &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Declaração de Arrays&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Constituição de um array:&lt;br /&gt;&lt;br /&gt;int[] xpto&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; =&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; new int[4]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {1, 2, 3, 4}&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ;&lt;br /&gt;_______&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __________&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; __________&lt;br /&gt;Declaração&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Construção&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Inicialização&lt;br /&gt;&lt;br /&gt;Regras gerais:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Na parte da construção é obrigatório indicar o tamanho do array se não existir a parte da inicialização; se tiver inicialização então é opcional&lt;/li&gt;&lt;li&gt;A parte parte da construção pode ser omitida se a inicialização vier no mesmo statement&lt;/li&gt;&lt;/ul&gt;Num array multidimensional apenas é obrigatório indicar na parte da construção o tamanho da primeira dimensão, caso não haja inicialização.&lt;br /&gt;&lt;br /&gt;Os&lt;b&gt; []&lt;/b&gt; podem estar intercalados com o identificador.&lt;br /&gt;O tamanho do array apenas pode ser declarado na inicialização do mesmo, isto é, à direita do &lt;b&gt;=.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ex:&amp;nbsp; int[] array = new int&lt;b&gt;[10]&lt;/b&gt;;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Declaração de enumerados&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;enum&lt;/b&gt; xpto &lt;b&gt;{&lt;/b&gt;X, Y, Z&lt;b&gt;}; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Só podem ser declarados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;b&gt;na sua própria classe&lt;/b&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;como um membro da classe&lt;/b&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt; tal como uma classe dentro de um ficheiro de uma classe pública&lt;/li&gt;&lt;/ul&gt;Os &lt;b&gt;enum&lt;/b&gt; não podem ser declarados dentro de métodos!&lt;br /&gt;&lt;br /&gt;Tal como numa &lt;b&gt;não inner classe &lt;/b&gt;(quando o &lt;b&gt;enum&lt;/b&gt; é declarado como tal), apenas se pode aplicar os modificadores:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;public&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;default &lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Se mais nenhuma declaração se seguir ao &lt;b&gt;enum&lt;/b&gt;, então o &lt;b&gt;;&lt;/b&gt; (ponto e vírgula) é opcional.&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;A ordem pela qual os valores no &lt;b&gt;enum&lt;/b&gt; são declarados conta!&lt;/u&gt; Isto porque o método &lt;b&gt;values()&lt;/b&gt; presente em todos os enums, retorna um array do tipo do enum com os valores pela ordem da declaração.&lt;br /&gt;&lt;br /&gt;Num &lt;b&gt;enum &lt;/b&gt;é possível fazer override a métodos do próprio &lt;b&gt;enum&lt;/b&gt;. &lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&lt;table bgcolor="#FCDFFF" border="1"&gt;&lt;tbody&gt;&lt;tr&gt;&lt;td&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;enum Xpto{&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; A(1),&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; B(2){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; // Este bloco denomina-se: &lt;b&gt;Constant Specific Class Body&lt;/b&gt; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; public String getXptoza(){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return "ABC";&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; };&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; Xpto(int i){&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; this.i = i;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; private int i;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; public String getXptoza(){&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; return "Z"; &lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; }&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;}&lt;/span&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Uma classe que implemente uma interface:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Não pode declarar novas &lt;i&gt;checked exceptions&lt;/i&gt; para os métodos implementados&lt;/li&gt;&lt;li&gt;Não pode declarar excepções que são mais abrangentes que as excepções declaradas no método da interface&lt;/li&gt;&lt;li&gt;Pode declarar &lt;i&gt;Runtime Exceptions&lt;/i&gt; em qualquer método da interface independentemente da declaração da interface&lt;/li&gt;&lt;li&gt;Não é obrigatório declarar todas as excepções da interface (pode mesmo não declarar nenhuma)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;IS-A&lt;/b&gt;: Passa o teste do &lt;b&gt;instanceof&lt;/b&gt; (uso de &lt;b&gt;implements&lt;/b&gt; e &lt;b&gt;extends&lt;/b&gt;)&lt;br /&gt;&lt;b&gt;HAS-A:&lt;/b&gt; Baseado no uso e não na herança. Ou seja, uma classe &lt;b&gt;has-a&lt;/b&gt; outra se o código da primeira classe tiver uma referência para uma instância da segunda.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Herança, Overriding, Overloading&amp;nbsp;&lt;/b&gt;&lt;b&gt; e Polimorfismo&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Invocação de métodos polimórficos aplica-se apenas a métodos de instância overrriden!&lt;/u&gt; Apenas métodos de instância overriden são invocados dinamicamente baseados no tipo real de objecto.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;A escolha de qual método overloaded invocar não é decidida dinamicamente em runtime&lt;/u&gt;. O tipo de referência (não o tipo de objecto) determina o método overloaded que é invocado.&lt;br /&gt;&lt;br /&gt;O compilador apenas "olha" para o tipo de referência e não ao tipo de instância. &lt;br /&gt;&lt;br /&gt;Os métodos &lt;b&gt;abstract&lt;/b&gt;, quando concretizados pelas subclasses, são sempre do tipo override.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Os métodos &lt;b&gt;static&lt;/b&gt; não podem ser overriden&lt;/u&gt;!&lt;br /&gt;&lt;br /&gt;&lt;u&gt;As variáveis de instância também podem ser overrided&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Resumindo&lt;/u&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;overriding: &lt;/b&gt;decidido em runtime baseado no tipo de objecto&lt;/li&gt;&lt;li&gt;&lt;b&gt;overloading:&lt;/b&gt; baseado no tipo de referência do argumento passado em tempo de compilação&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Escolha de métodos overloaded&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="background-color: #f4cccc;"&gt;Não esquecer&lt;/span&gt;: &lt;/i&gt;O código tem de ser retro-compatível sempre! Por isso comportamentos anteriores são sempre preferidos!&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;widening&lt;/i&gt; é preferido sobre o &lt;i&gt;boxing&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;widening &lt;/i&gt;é preferido sobre &lt;i&gt;var-args&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boxing&lt;/i&gt; é preferido sobre &lt;i&gt;var-args&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;var-args&lt;/i&gt; é sempre o último recurso&lt;i&gt;&amp;nbsp;&lt;/i&gt; &lt;/li&gt;&lt;/ul&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Regras de overriding&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Regras para o método que está a fazer o override&lt;b&gt; &lt;/b&gt;em relação ao&lt;b&gt; &lt;/b&gt;método overriden&lt;b&gt;:&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;u&gt;Modificador de acesso&lt;/u&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Não pode ter um modificador de acesso mais restritivo&lt;/li&gt;&lt;li&gt;Pode ter um modificador menos restritivo&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;u&gt;Retorno&lt;/u&gt; &lt;/li&gt;&lt;ul&gt;&lt;li&gt;O tipo de retorno tem de ser o mesmo, ou um subtipo do tipo declarado&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;u&gt;Excepções &lt;/u&gt;(em relação às excepções declaradas na assinatura do método overriden)&lt;/li&gt;&lt;ul&gt;&lt;li&gt;Pode lançar quaisquer excepções não checadas (&lt;i&gt;que estendam RuntimeException&lt;/i&gt;)&lt;/li&gt;&lt;li&gt;Não pode atirar novas excepções checked&lt;/li&gt;&lt;li&gt;Não pode atirar excepções que sejam mais abrangentes&lt;/li&gt;&lt;li&gt;Pode atirar excepções que sejam subclasses&lt;/li&gt;&lt;li&gt;&amp;nbsp;Pode lançar (declarar) menos ou nenhuma excepção&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;b&gt;Casting&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;upcasting&lt;/b&gt; - o cast é implícito, é opcional fazer o cast&lt;/li&gt;&lt;li&gt;&lt;b&gt;downcasting&lt;/b&gt; - o cast é obrigatório. É verificado apenas se o cast é possível, isto é, se os tipos estão na árvore de herança. Se não estiverem na árvore de herança dá erro de compilação.&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Implementação de interfaces&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Seguir todas as regras para os overrides legais&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Uma interface pode estender outras&lt;/u&gt; (uma ou mais ao mesmo tempo).&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;extends&lt;/b&gt; tem de preceder &lt;b&gt;implements&lt;/b&gt;&lt;/u&gt; caso uma classe use os dois.&lt;br /&gt;&lt;br /&gt;Se uma superclasse implementar uma interface, e se uma subclasse indicar explicitamente que também implementa a mesma interface, a subclasse não tem de voltar a implementar os métodos da interface, quando a superclasse já o fez. Não faz mal voltar a tornar explícito a indicação de implementação da interface.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Regras para construtores&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Pode existir um método com o mesmo nome da classe, mas este não ser um construtor (basta retornar algo)&lt;/li&gt;&lt;li&gt;O construtor por defeito e sem argumentos apenas é automaticamente criado pelo compilador, se nenhum outro construtor for declarado&lt;/li&gt;&lt;li&gt;A chamada a outro construtor ou a um construtor da superclasse é o primeiro statement (a primeira instrução) de cada construtor. O compilador pode inserir a chamada a &lt;b&gt;super()&lt;/b&gt; caso não exista nenhuma chamada a outro construtor&lt;/li&gt;&lt;li&gt;Não pode ser efectuada nenhuma chamada a métodos de instância ou acesso a variáveis de instância até depois do super construtor ter corrido (o construtor da superclasse). (Daí a chamada a outros construtores ter de estar na primeira linha)&lt;/li&gt;&lt;li&gt;O uso de variáveis estáticas e métodos estáticos é permitido na chamada a outros construtores da classe&lt;/li&gt;&lt;li&gt;As classes &lt;b&gt;abstract&lt;/b&gt; têm construtores que são sempre chamados quando uma subclasse concreta é instanciada&lt;/li&gt;&lt;li&gt;Um construtor apenas pode ser invocado dentro de outro&lt;/li&gt;&lt;li&gt;&lt;b&gt;Os construtores não são herdados!&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Os construtores não podem ser marcados como:&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;static&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;final&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt; abstract&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;u&gt;Construtor default&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Tem o mesmo modificador de acesso da classe&lt;/li&gt;&lt;li&gt;Incluí ele próprio uma chamada a &lt;b&gt;super()&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;O compilador dará erro se uma subclasse tiver um construtor onde ele tenha de colocar uma chamada implícita a &lt;b&gt;super()&lt;/b&gt; e a superclasse não tiver um construtor sem argumentos. Neste caso&amp;nbsp; a chamada tem de ser feita à mão, colocando a chamada ao construtor da superclasse com argumentos.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;static e o compilador&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;No acesso a coisas &lt;b&gt;static&lt;/b&gt;, o compilador apenas tem em atenção o tipo declarado da variável que está a aceder ao &lt;b&gt;static&lt;/b&gt;, ou seja, &lt;b&gt;é independente da variável de instância&lt;/b&gt; (o que conta é o tipo da variável de referência e não o tipo de objecto).&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Coupling e Cohesion&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Coupling&lt;/u&gt;&lt;b&gt; &lt;/b&gt;- Até que ponto uma classe está ligada às demais. Ou seja, até que ponto alterações numa classe afectam outras.&lt;br /&gt;&lt;u&gt;Cohesion&lt;/u&gt; - Como é que uma dada classe é desenhada. Até que ponto uma classe tem um único e bem focado propósito.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Heap e Stack&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Heap&lt;/u&gt; -&amp;nbsp;&lt;b&gt; &lt;/b&gt;Onde estão as variáveis de instância e os objectos.&lt;br /&gt;&lt;u&gt;Stack&lt;/u&gt; - Onde estão as variáveis locais.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Números octais, decimais e hexadecimais&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;u&gt;Números octais&lt;/u&gt; -&amp;nbsp;&lt;b&gt; &lt;/b&gt;Todos os números inteiros começados por &lt;b&gt;0 &lt;/b&gt;(zero) podem ter até &lt;b&gt;21&lt;/b&gt; dígitos.&lt;br /&gt;&lt;u&gt;Números hexadecimais&lt;/u&gt; - Todos os números começados por &lt;b&gt;0x&lt;/b&gt; (zero x). Podem ter até &lt;b&gt;16&lt;/b&gt; dígitos (a representação das letras &lt;b&gt;não é&lt;/b&gt; case sensitive).&lt;br /&gt;&lt;br /&gt;Por defeito, os números em octal, decimal, ou hexadecimal são &lt;b&gt;ints&lt;/b&gt;, a não ser que sejam terminados por &lt;b&gt;L&lt;/b&gt; ou &lt;b&gt;l&lt;/b&gt; (L minúsculo) sendo então &lt;b&gt;longs&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Narrowing e Widening&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Sendo &lt;i&gt;Maior &lt;/i&gt;e &lt;i&gt;Menor &lt;/i&gt;tipos de dados&lt;b&gt; :&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Maior&amp;nbsp;&lt;b&gt; &lt;/b&gt;------------ &lt;i&gt;Narrowing (cast obrigatório) ----------------- &amp;gt; Menor&lt;/i&gt;&lt;br /&gt;Maior&amp;nbsp;&lt;b&gt; &lt;/b&gt;&amp;lt;-----------&lt;i&gt;Widening (cast opcional. é implícito) ---------- Menor&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;"Escala":&lt;/i&gt;&lt;br /&gt;&lt;i&gt; &lt;/i&gt;&lt;br /&gt;&lt;b&gt;double&lt;/b&gt; &amp;gt; &lt;b&gt;float&lt;/b&gt; &amp;gt; &lt;b&gt;long&lt;/b&gt;&lt;i&gt; &lt;/i&gt;&amp;gt; &lt;b&gt;int&lt;/b&gt; &amp;gt; &lt;b&gt;short &lt;/b&gt;&amp;gt; &lt;b&gt;byte&lt;/b&gt;&lt;i&gt;&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;br /&gt;Existe o &lt;i&gt;caso especial do &lt;b&gt;char&lt;/b&gt;. &lt;/i&gt;Uma vez que o &lt;b&gt;char&lt;/b&gt; é um inteiro sem sinal de &lt;b&gt;16 bits&lt;/b&gt; só é possível fazer &lt;i&gt;widening &lt;/i&gt;a partir de &lt;b&gt;int&lt;/b&gt;. Todo e qualquer cast de outro tipo de dados numérico (&lt;b&gt;double&lt;/b&gt;, &lt;b&gt;float&lt;/b&gt;, &lt;b&gt;long&lt;/b&gt;, &lt;b&gt;int&lt;/b&gt;, &lt;b&gt;short &lt;/b&gt;ou &lt;b&gt;byte&lt;/b&gt;) para &lt;b&gt;char&lt;/b&gt; é sempre &lt;i&gt;narrowing&lt;/i&gt;. Detalhes completos disponíveis na &lt;a href="http://java.sun.com/docs/books/jls/third_edition/html/conversions.html"&gt;especificação&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Os operadores de atribuição compostos (+=, -=, *=, /=) colocam automaticamente um cast, não sendo necessário, por isso, escrevê-lo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Valores por defeito de variáveis não locais atribuídos pelo compilador&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Referência para objecto: &lt;i&gt;null&lt;/i&gt;&lt;/li&gt;&lt;li&gt;byte, short, int, long: &lt;i&gt;0 (zero)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;float, double: &lt;i&gt;0&lt;/i&gt; &lt;i&gt;(zero)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;boolean: &lt;i&gt;false&lt;/i&gt;&lt;/li&gt;&lt;li&gt;char: &lt;i&gt;'\u0000' (u seguido de zeros)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Se uma &lt;i&gt;&lt;u&gt;referência de array&lt;/u&gt; for construída mas não for inicializada&lt;/i&gt; dentro do array serão colocados os mesmos valores que o tipo dos valores têm na inicialização por defeito. Isto é verdade quer para variáveis locais ou de instância.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Todas as variáveis locais têm de ser inicializadas antes de serem usadas&lt;/u&gt;. Caso não sejam usadas não é obrigatório inicializadas.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Arrays&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Arrays são sempre objectos&lt;/u&gt;!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Blocos de inicialização&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Estáticos&lt;/li&gt;&lt;li&gt;de Instância - correm imediatamente depois de todos os super construtores terem corrido. Correm pela ordem que aparecem no ficheiro fonte&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Classes wrapper&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;As&lt;b&gt;&amp;nbsp;&lt;/b&gt;classes wrapper (de tipos primitivos como por exemplo &lt;b&gt;Integer&lt;/b&gt;) tal como a classe &lt;b&gt;String&lt;/b&gt; são &lt;u&gt;&lt;b&gt;imutáveis&lt;/b&gt;&lt;i&gt;.&lt;/i&gt;&lt;/u&gt; O seu valor depois de atribuído não pode ser alterado.&lt;br /&gt;&lt;br /&gt;Exceptuando a classe &lt;b&gt;Character&lt;/b&gt; cujo construtor apenas recebe um &lt;b&gt;char&lt;/b&gt;, todos os outros construtores das outras classes wrapper podem receber uma &lt;b&gt;String&lt;/b&gt; ou o tipo que fazem wrap.&lt;br /&gt;&lt;br /&gt;A partir do Java 5, o objecto &lt;b&gt;Boolean&lt;/b&gt; pode ser usado num teste booleano.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Criação de objectos wrapper&lt;/u&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Usando um construtor&lt;/li&gt;&lt;li&gt;Usando o método estático &lt;b&gt;valueOf()&lt;/b&gt; [tomar em atenção que a classe &lt;b&gt;Character&lt;/b&gt; não tem este método]&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Conversão de um numérico wrapped para um primitivo&lt;/u&gt; (&lt;b&gt;Character&lt;/b&gt; e &lt;b&gt;Boolean&lt;/b&gt; não têm):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt; xxxValue()&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;parseXxx()&lt;/b&gt; [estático]&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Apenas os inteiros podem ter radix&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;&lt;br /&gt;&lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Boolean.html"&gt;Boolean&lt;/a&gt; &lt;/th&gt; &lt;th style="text-align: center;"&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Byte.html"&gt;Byte&lt;/a&gt;&lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Character.html"&gt;Character&lt;/a&gt; &lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Double.html"&gt;Double &lt;/a&gt;&lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Float.html"&gt;Float&lt;/a&gt; &amp;nbsp; &lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Integer.html"&gt;Integer&lt;/a&gt;&lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Long.html"&gt;Long&lt;/a&gt;&lt;/th&gt; &lt;th style="text-align: center;"&gt;&amp;nbsp;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Short.html"&gt;Short &lt;/a&gt;&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;xxxValue&lt;/b&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;parseXxx&lt;/b&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;parseXxx&lt;/b&gt;&lt;br /&gt;&lt;i&gt;com radix&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;valueOf&lt;/b&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;valueOf&lt;/b&gt;&lt;br /&gt;&lt;i&gt;com radix&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;toString&lt;/b&gt;(primitivo)&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;toString&lt;/b&gt;(primitivo)&lt;br /&gt;&lt;i&gt;com radix&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;b&gt;toXxxString&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Octal, hex ou bin&lt;/i&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;X&lt;/td&gt; &lt;td style="text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;i&gt;Para o exame é necessário saber bem estes métodos, em que classes existem, etc.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Boxing e Autoboxing&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ao invés de se ter de:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;criar o wrapper&lt;/li&gt;&lt;li&gt;tirar o primitivo de dentro do wrapper&lt;/li&gt;&lt;li&gt;usar o primitivo&lt;/li&gt;&lt;li&gt;voltar a criar um wrapper&lt;/li&gt;&lt;/ul&gt;Pode-se usar o objecto como primitivo que a VM trata do resto.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;No caso dos operadores&lt;b&gt; != &lt;/b&gt;e&lt;b&gt; ==&lt;/b&gt;, a comparação entre um primitivo e um objecto wrapped é feita do seguinte modo&lt;/u&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Os objectos são unwrapped e a comparação será primitivo a primitivo&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Duas instâncias dos seguintes objectos wrapper (&lt;b&gt;criadas através de boxing&lt;/b&gt;), serão sempre iguais (comparação com o operador &lt;b&gt;==&lt;/b&gt;) quando os seus primitivos forem do mesmo valor:&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;Boolean&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Byte&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;Character&lt;/b&gt; -&amp;gt; de \u0000 (0) a \u007F (127)&lt;/li&gt;&lt;li&gt;&lt;b&gt;Short&lt;/b&gt; -&amp;gt; de -128 a 127&lt;/li&gt;&lt;li&gt;&lt;b&gt;Integer&amp;nbsp;&lt;/b&gt; -&amp;gt; de -128 a 127&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;O &lt;i&gt;Boxing&lt;/i&gt; e o &lt;i&gt;unboxing &lt;/i&gt;funcionam, de um modo geral, nos mesmos locais onde normalmente se usam primitivos ou um objecto wrapped.&lt;br /&gt;&lt;br /&gt;As classes wrapper não podem fazer widden umas para as outras.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;O que é e não é permitido&lt;/i&gt; (no &lt;i&gt;boxing &lt;/i&gt;e &lt;i&gt;widening&lt;/i&gt;):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;widden&lt;/i&gt; seguido de &lt;i&gt;box&lt;/i&gt; &lt;b&gt;não é permitido&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;box&lt;/i&gt;&lt;b&gt; &lt;/b&gt;seguido de &lt;i&gt;widen&lt;/i&gt; &lt;b&gt;é permitido&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Garbage Collector (GC)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O&lt;i&gt; Garbage Collector (GC) &lt;/i&gt;limpa apenas a heap (&lt;span style="background-color: #f4cccc;"&gt;no que ao exame diz respeito&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Método finalize()&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Para qualquer objecto, &lt;b&gt;finalize()&lt;/b&gt; será apenas chamado uma e uma só vez no máximo pelo GC&lt;/li&gt;&lt;li&gt;Chamar o método &lt;b&gt;finalize()&lt;/b&gt; pode fazer com que o objecto não seja apagado&lt;/li&gt;&lt;li&gt;Poderá nunca ser executado&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Operadores&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Nos operadores compostos (&lt;i&gt;+=, -=, *=, /=&lt;/i&gt;)&lt;/u&gt;&lt;b&gt; &lt;/b&gt;a expressão à direita tem sempre precedência.&lt;br /&gt;&lt;br /&gt;Na comparação entre um carácter com outro&amp;nbsp; ou com um numérico é usado o valor unicode do carácter como valor numérico.&lt;br /&gt;&lt;br /&gt;Com os operadores &lt;i&gt;== &lt;/i&gt;ou &lt;i&gt;!=&lt;/i&gt; apenas de pode comparar tipos compatíveis.&lt;br /&gt;&lt;br /&gt;Nos &lt;b&gt;enum&lt;/b&gt; &lt;i&gt;==&lt;/i&gt; ou &lt;i&gt;equals()&lt;/i&gt; dão o mesmo resultado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;instanceof&lt;/b&gt; não pode ser usado para testar duas classes hierárquicas diferentes (dá erro de compilação).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Operador condicional&lt;/b&gt; : &lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;variável = (expressão_booleana) ? valor_a_atribuir_ se_Verdade : valor_a_atribuir_se_Falso;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&amp;amp;&amp;amp; - &lt;/b&gt;short-circuit AND&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;amp;&lt;/b&gt;&lt;b&gt; - &lt;/b&gt;non-short-circuit AND&lt;br /&gt;&lt;b&gt;!!&lt;/b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; - short-circuit OR&lt;b&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;/b&gt;&amp;nbsp;&lt;b&gt;&amp;nbsp; - &lt;/b&gt;non-short-circuit OR&lt;br /&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;b&gt;Switch&lt;/b&gt;&lt;u&gt;&lt;br /&gt;&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;i&gt;switch&lt;/i&gt;&lt;/b&gt;&lt;i&gt; (expression) {&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&lt;b&gt;case&lt;/b&gt; constant1: code block&lt;/i&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;i&gt;&lt;b&gt;case&lt;/b&gt; constant1: code block&lt;/i&gt;&lt;br /&gt;&lt;i&gt;&amp;nbsp; &amp;nbsp;&amp;nbsp; &lt;b&gt;default&lt;/b&gt;: code block &lt;/i&gt;&lt;br /&gt;&lt;i&gt;}&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Uma expressão (&lt;i&gt;expression&lt;/i&gt;) no &lt;b&gt;switch&lt;/b&gt; tem de ser avaliada como: &lt;b&gt;char&lt;/b&gt;, &lt;b&gt;byte&lt;/b&gt;, &lt;b&gt;short&lt;/b&gt;, &lt;b&gt;int&lt;/b&gt; ou &lt;b&gt;enum&lt;/b&gt;, ou seja, apenas &lt;b&gt;enum&lt;/b&gt;s e variáveis que possam implicitamente ser promovidas a &lt;b&gt;int&lt;/b&gt; podem ser usadas!&lt;br /&gt;&lt;br /&gt;A constante do &lt;b&gt;case&lt;/b&gt; tem de ser avaliada tal qual a expressão (&lt;i&gt;expression&lt;/i&gt;) do &lt;b&gt;switch&lt;/b&gt; e &lt;u&gt;ainda tem de ser uma constante em tempo de compilação&lt;/u&gt;!&lt;br /&gt;&lt;br /&gt;O&amp;nbsp; &lt;b&gt;default&lt;/b&gt; case pode vir em qualquer posição do &lt;b&gt;case&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ciclo for&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;No ciclo &lt;b&gt;for&lt;/b&gt; todas as partes da declaração são opcionais&lt;/u&gt;.&lt;br /&gt;&lt;br /&gt;Na parte da inicialização todas as variáveis têm de ser do mesmo tipo. Na parte da condição o resultado tem de ser booleano. Na parte do incremento qualquer statement é válido!&lt;br /&gt;&lt;br /&gt;No uso de &lt;b&gt;continue&lt;/b&gt; e &lt;b&gt;break&lt;/b&gt; com labels, ambos têm de estar dentro do loop que tem o mesmo nome da label. Caso contrário código não compila.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Assertions&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Quando se usa assertions presume-se sempre que algo (o que se testa) é verdadeiro. Caso não seja uma &lt;i&gt;AssertionError&lt;/i&gt; é lançada.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;assert (boolean_expression);&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;assert (boolean_expression)&lt;/i&gt; &lt;i&gt;: expressão_que_retorna_um_valor&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;A parte &lt;i&gt; expressão_que_retorna_um_valor&lt;/i&gt; é impressa apenas se uma &lt;i&gt;AssertionError&lt;/i&gt; for lançada.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;assert &lt;/i&gt;só pode ser usado como identificador se o código for compilado com a opção: &lt;b&gt;-source 1.3&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;A opção de runtime &lt;b&gt;-ea&lt;/b&gt; ou &lt;b&gt;-enableassertions &lt;/b&gt;activa as assertions.&lt;br /&gt;&lt;br /&gt;Apeser de por defeito as assertions estarem desligadas, as opções de runtime &lt;b&gt;-da&lt;/b&gt; ou &lt;b&gt;-disableassertions&lt;/b&gt; inactivam as assertions também.&lt;br /&gt;&lt;br /&gt;A opção &lt;b&gt;-dsa&lt;/b&gt; desliga as assertions para as classes de sistema.&lt;br /&gt;&lt;br /&gt;Pode-se combinar as opções de ligar e desligar assertions. &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Pode-se ligar/desligar as assertions do seguinte modo:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;sem argumentos&lt;/i&gt; -&amp;gt; Todas as classes excepto as de sistema&lt;/li&gt;&lt;li&gt;&lt;i&gt;com nome de pacote&lt;/i&gt; -&amp;gt; Todas as classes do pacote indicado e também, subpacotes&lt;/li&gt;&lt;li&gt;&lt;i&gt;nome da classe&lt;/i&gt; -&amp;gt; Classe indicada&lt;/li&gt;&lt;/ul&gt;Exemplo: &lt;i&gt;-ea:pt.xpto.pacote&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;Mais &lt;/i&gt;&lt;i&gt;informação em:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://download.oracle.com/javase/1.4.2/docs/guide/lang/assert.html"&gt;Programming with assertions&lt;/a&gt;&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;a href="http://java.sun.com/developer/technicalArticles/JavaLP/assertions/"&gt;Using assertions in Java Technology&lt;/a&gt;&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Excepções&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Unchecked Exceptions&lt;/u&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;RuntimeException &lt;/i&gt;(e subclasses) &lt;/li&gt;&lt;li&gt;&lt;i&gt;Error&lt;/i&gt; (e subclasses)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th style="background-color: yellow;"&gt;Excepção&lt;/th&gt; &lt;th style="background-color: yellow;"&gt;Descrição&lt;/th&gt; &lt;th style="background-color: yellow;"&gt;Normalmente Lançada Por&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;IllegalStateException&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Atirada quando o estado do ambiente não corresponde à operação que se está a tentar&lt;/td&gt;&lt;td&gt;Programaticamente&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;ExceptionInInitializerError&lt;/i&gt;&lt;/td&gt;&lt;td&gt;Atirada quando se tenta inicializar uma variável ou bloco de inicialização estático&lt;/td&gt;&lt;td&gt;JVM&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-9TodNm-hQ6g/Tj_jffbyUDI/AAAAAAAAAM8/_5tAXxgAzvQ/s1600/RuntimeException.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="251" src="http://4.bp.blogspot.com/-9TodNm-hQ6g/Tj_jffbyUDI/AAAAAAAAAM8/_5tAXxgAzvQ/s640/RuntimeException.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;String Constant Pool&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Zona de memória onde são guardadas as &lt;b&gt;Strings&lt;/b&gt; pela &lt;i&gt;JVM&lt;/i&gt;. Se uma dada &lt;b&gt;String&lt;/b&gt; já existir, a &lt;i&gt;JVM&lt;/i&gt; apenas coloca uma referência extra para a &lt;b&gt;String&lt;/b&gt;, e um novo objecto não é criado.&lt;br /&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;Métodos mais importantes &lt;/b&gt;&lt;b&gt;na classe &lt;/b&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/String.html"&gt;&lt;b&gt;String&lt;/b&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;É imprescindível para o exame saber de cor vários métodos em várias classes. Não há consulta disponível por isso tem de se decorar a API.&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;char charAt(int)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String concat (String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String replace(char o, char n)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String toLowerCase()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String toUpperCase()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String trim()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean equalsIgnoreCase(String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;int length()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String substring(int)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String substring(int b, int e) &lt;/i&gt;- O &lt;i&gt;e&lt;/i&gt; é exclusive&lt;/li&gt;&lt;li&gt;&lt;i&gt;Strint toString()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;Não esquecer&lt;/i&gt;: &lt;b&gt;Arrays &lt;/b&gt;têm a propriedade &lt;b&gt;length&lt;/b&gt; pública para leitura. Nas &lt;b&gt;Strings&lt;/b&gt; só por acesso ao método &lt;b&gt;length()&lt;/b&gt;!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos mais importantes na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/StringBuilder.html"&gt;StringBuilder &lt;/a&gt;e &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/StringBuffer.html"&gt;StringBuffer&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;StringXxx append(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;StringXxx delete(int s, int e) -&lt;/i&gt; O &lt;i&gt;e&lt;/i&gt; é exclusive&lt;/li&gt;&lt;li&gt;&lt;i&gt;StringXxx insert(int o, ...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt; StringXxx reverse()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String toString()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean equals(Object) &lt;/i&gt;- Não compara os valores pois não é overriden!&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Java io&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://4.bp.blogspot.com/-D7WpNoFOtc0/TkAIxtBiO6I/AAAAAAAAANA/CYqrbBeZkPI/s1600/io.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="214" src="http://4.bp.blogspot.com/-D7WpNoFOtc0/TkAIxtBiO6I/AAAAAAAAANA/CYqrbBeZkPI/s640/io.png" width="640" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;b&gt;Métodos principais na classe &lt;/b&gt;&lt;b&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/File.html"&gt;java.io.File&lt;/a&gt;&lt;/b&gt;&lt;u&gt; &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Um objecto do tipo &lt;b&gt;File&lt;/b&gt; pode representar ou um ficheiro ou uma directoria.&lt;br /&gt;O construtor da classe &lt;b&gt;File&lt;/b&gt; não cria o ficheiro/directoria fisicamente. Apenas cria o nome do ficheiro/directoria.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;File(File, String) &lt;br /&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;File(String, String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;File(String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean createNewFile()&lt;/i&gt; - cria um ficheiro se ainda não existir&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean mkdir()&lt;/i&gt; - cria a directoria se ainda não existir &lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean isFile()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean isDirectory()&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean exists()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean delete()&lt;/i&gt; - não apaga uma directoria se esta não estiver vazia&lt;/li&gt;&lt;li&gt;&lt;i&gt;String[] list()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean renameTo(File) &lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais na classe &lt;/b&gt;&lt;b&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/FileWriter.html"&gt;java.io.FileWriter&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;FileWriter(File&lt;/i&gt;) -&amp;gt; Cria o ficheiro fisicamente&lt;/li&gt;&lt;li&gt;&lt;i&gt;FileWriter(String) &lt;/i&gt;-&amp;gt; Cria o ficheiro fisicamente&lt;/li&gt;&lt;li&gt;&lt;i&gt;close()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;write(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;flush()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais na classe &lt;/b&gt;&lt;b&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/BufferedWriter.html"&gt;java.io.BufferedWriter&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;u&gt;&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;BufferedWriter(Writer)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;close()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;newLine()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;flush()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;write(...)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/PrintWriter.html"&gt;java.io.PrintWriter&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;PrintWriter(File)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;PrintWriter(String) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;PrintWriter(OutputStream)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;PrintWriter(Writer) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;flush()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;close()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;format(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;write(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;print(...)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;printf(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;println(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;append(...)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Nota&lt;/u&gt;&lt;/i&gt; : Só o &lt;b&gt;mkdir()&lt;/b&gt; cria a directoria. Ao contrário do que ocorre com os ficheiros, as directorias não são criadas automaticamente pelos &lt;i&gt;Writers&lt;/i&gt; (dá excepção).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/FileReader.html"&gt;java.io.FileReader&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;FileReader(File)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;FileReader(String) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;int read(char[])&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/BufferedReader.html"&gt;java.io.BufferedReader&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;BufferedReader(Reader)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String readLine()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;read()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/Console.html"&gt;java.io.Console&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;String readLine(mascaraStr, promptStr)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;char[] readPassword&lt;/i&gt;&lt;i&gt;(mascaraStr, promptStr)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;format(mascaraStr, ...) &lt;/i&gt;- escreve na consola&lt;/li&gt;&lt;li&gt;&lt;i&gt;format(String, ...)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;- escreve na consola&lt;/li&gt;&lt;/ul&gt;Nenhum dos parâmetros dos métodos da classe &lt;i&gt;Console&lt;/i&gt; pode ser &lt;i&gt;null&lt;/i&gt;. Caso algum seja uma &lt;i&gt;NullPointerException&lt;/i&gt; é lançada.&lt;br /&gt;&lt;br /&gt;Obter o objecto &lt;i&gt;Console&lt;/i&gt;:&amp;nbsp; &lt;i&gt;System.console(); &lt;/i&gt;- Pode retornar &lt;i&gt;null&lt;/i&gt; se a mesma não existir.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos principais na classe &lt;a href="http://www.blogger.com/goog_395213509"&gt;java.io.ObjectOutputStream&lt;/a&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/ObjectOutputStream.html"&gt; &lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;ObjectOutputStream(OutputStream)&lt;/i&gt;&lt;i&gt; - OutputSteam &lt;/i&gt;é geralmente &lt;i&gt;FileOutputStream&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;writeObject(Object)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Métodos principais na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/ObjectInputStream.html"&gt;java.io.ObjectInputStream&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;ObjectInputStream&lt;/i&gt;&lt;i&gt;(InputStream)&lt;/i&gt; - &lt;i&gt;InputStream&lt;/i&gt; é geralmente &lt;i&gt;FileInputStream&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object readObject()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/FileInputStream.html"&gt;java.io.FileInputStream&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;FileInputStream(String)&lt;/i&gt;&lt;u&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/u&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/io/FileOutputStream.html"&gt;java.io.FileOutputStream&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;FileOutputStream(String)&lt;/i&gt;&lt;u&gt;&lt;b&gt; &lt;/b&gt;&lt;/u&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Serialização&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Para serem serializáveis as classes têm de implementar &lt;i&gt;Serializable&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Se um objecto não serializável (que não implementa &lt;i&gt;Serializable&lt;/i&gt;) for tentado ser serializado ocorre a excepção: &lt;i&gt;java.ioNotSerializableException&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Se todos os objectos do grafo de serialização forem serializáveis, não é preciso fazer nada. Caso contrário poderá ser necessário ajudar na serialização com estes dois métodos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt;private&lt;/i&gt;&lt;/b&gt; &lt;b&gt;void writeObject(ObjectOutputStream) &lt;/b&gt;- pode lançar &lt;i&gt;IOException&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;deve-se invocar na primeira linha do método: &lt;i&gt;os.defaultWriteObject&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;li&gt;&lt;b&gt;private void readObject(ObjectInputStream)&lt;/b&gt; - pode lançar &lt;i&gt;IOException&lt;/i&gt; e &lt;br /&gt;&lt;i&gt;ClassNotFoundException&lt;/i&gt;&lt;/li&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;deve-se invocar na primeira linha do método: &lt;i&gt;os.defaultReadObject&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;É recomendado tratar as excepções na serialização.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Criação de novos objectos e Serialização&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Eventos&lt;b&gt; &lt;/b&gt;que ocorrem quando se usa &lt;i&gt;&lt;b&gt;new&lt;/b&gt;&lt;/i&gt; para criar um novo objecto:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Todas as variáveis de instância da classe têm atribuído os valores por defeito&lt;/li&gt;&lt;li&gt;O construtor é invocado e, imediatamente, é chamado o construtor da superclasse&lt;/li&gt;&lt;li&gt;Os construtores da superclasse completam (correm e terminam)&lt;/li&gt;&lt;li&gt;As variáveis de instância que são inicializadas como fazendo parte da sua declaração vêm atribuído o seu valor inicial&lt;/li&gt;&lt;li&gt;O construtor completa-se (corre e termina)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Esta ordem de eventos &lt;b&gt;não ocorre&lt;/b&gt; quando um objecto é desserializado! Quando uma instância de uma classe serializável, é desserializada:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;O construtor não corre&lt;/li&gt;&lt;li&gt;Se uma classe serializável estender outra que não o é, o construtor da classe&amp;nbsp; serializável &lt;b&gt;não corre&lt;/b&gt; (como indicado no ponto anterior), mas o da superclasse irá correr, tal como todos os construtores de todas as superclasses acima da superclasse!&lt;/li&gt;&lt;li&gt;As variáveis de instância não têm os seus valores iniciais atribuídos&lt;/li&gt;&lt;li&gt;Só os valores que foram salvos (o estado do objecto na altura da serialização) serão reatribuídos&lt;/li&gt;&lt;li&gt;As variáveis que não estão no estado do objecto terão os valores por defeito do tipo da variável&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;b&gt;Métodos principais na classe java.util.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Date.html"&gt;Date&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Date()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Date(long)&lt;/i&gt; - em milissegundos&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;setTime(long)&lt;/i&gt; - em milissegundos&lt;/li&gt;&lt;li&gt;&lt;i&gt;long getTime()&lt;/i&gt; - em milissegundos&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe java.util.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Calendar.html"&gt;Calendar&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Calendar getInstance()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Calendar &lt;/i&gt;&lt;i&gt;getInstance(Locale) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;add(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;setTime(Date)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;get(CALENDAR_CONSTANT)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;roll(...)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Date getTime()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;set(int year, int month, int day) - month&lt;/i&gt; começa em 0&lt;/li&gt;&lt;li&gt;&lt;i&gt;CALENDAR_CONSTANT getFirstDayOfWeek()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;O método &lt;i&gt;roll&lt;/i&gt; é igual ao método &lt;i&gt;add&lt;/i&gt;, exceptuando que no &lt;i&gt;roll&lt;/i&gt; os outros campos não são automaticamente incrementados ou decrementados. Só o campo indicado é que é.&lt;br /&gt;&lt;ul&gt;&lt;/ul&gt;&lt;b&gt;Métodos principas da classe java.util.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/text/DateFormat.html"&gt;DateFormat&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;DateFormat getInstance()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat &lt;/i&gt;&lt;i&gt;getDateInstance() &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat &lt;/i&gt;&lt;i&gt;getDateInstance(int style)&amp;nbsp; &lt;/i&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat &lt;/i&gt;&lt;i&gt;getDateInstance(int style, Locale locale)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String format(Date)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Date parse(String)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;O argumento &lt;i&gt;style&lt;/i&gt;&lt;b&gt; &lt;/b&gt;pode ser:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;DateFormat.SHORT&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat.MEDIUM&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat.LONG&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;DateFormat.FULL&lt;/i&gt; &lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe java.text.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/text/NumberFormat.html"&gt;NumberFormat&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;NumberFormat getInstance() &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;NumberFormat getInstance(Locale) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;NumberFormat get&lt;/i&gt;&lt;i&gt;NumberInstance()&lt;/i&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;NumberFormat&lt;/i&gt;&lt;i&gt; getNumberInstance(Locale)&lt;/i&gt;&lt;b&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;NumberFormat getCurrencyInstance()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;NumberFormat getCurrencyInstance(Locale)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String format(Number)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Number parse(String) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;int getMaximumFractionDigits()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;setMaximumFractionDigits(int) &lt;/i&gt;- Só se aplica na formatação&lt;/li&gt;&lt;li&gt;&lt;i&gt;setParseIntegerOnly(boolean)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe java.util.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Locale.html"&gt;Locale&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Locale(String language)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Locale(String language, String country)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Locale getDefault()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String getDisplayCountry()&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String getDisplayCountry(Locale)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String getDisplayLanguage()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String getDisplayLanguage(Locale)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Existe um conjunto de constantes que correspondem já a &lt;i&gt;Locales&lt;/i&gt; construídos. Ex: &lt;i&gt;Locale.GERMANY&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Expressões Regulares (regex)&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Métodos principais da classe java.util.regex.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html"&gt;Pattern&lt;/a&gt;&lt;/u&gt;&lt;/i&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Pattern Pattern.compile(String regex)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Matcher matcher(String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String pattern()&lt;/i&gt; &lt;i&gt;- &lt;/i&gt;String Regex&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;Métodos principais da classe java.util.regex.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/regex/Matcher.html"&gt;Matcher&lt;/a&gt;&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;boolean find()&lt;/i&gt; - Verifica se há um match/procura no próximo resultado&lt;/li&gt;&lt;li&gt;&lt;i&gt;int start()&lt;/i&gt; - Indices na String fonte onde começam os emparelhamentos&lt;/li&gt;&lt;li&gt;&lt;i&gt;Pattern pattern()&lt;/i&gt; - String regex. Só deve ser invocado se o método &lt;i&gt;find&lt;/i&gt; retornar &lt;b&gt;&lt;i&gt;true&lt;/i&gt;&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;&lt;i&gt;String group()&lt;/i&gt; - Resultado que encontrou. Só deve ser invocado se o método &lt;i&gt;find&lt;/i&gt; retornar &lt;b&gt;&lt;i&gt;true&lt;/i&gt;&lt;/b&gt;.&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean matches()&lt;/i&gt; - Indica se toda a String fonte corresponde à expressão regular indicada. &lt;/li&gt;&lt;/ul&gt;Como regra geral, uma procura regex corre da esquerda para a direita, e assim que um carácter da fonte tiver sido usado num resultado (match), não pode ser reutilizado. &lt;br /&gt;&lt;br /&gt;&lt;u&gt;Metacaracteres&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;\s&lt;/b&gt; - Um carácter whitespace&lt;b&gt;&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;\w&lt;/b&gt; - Um carácter palavra (letras, dígitos ou _ )&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;Quantificadores&lt;/u&gt;&lt;br /&gt;&lt;br /&gt;Para se usar quantificadores em conjuntos &lt;b&gt;&lt;i&gt;[....] &lt;/i&gt;&lt;/b&gt;tem de se colocar o conjunto entre parêntesis. Por exemplo:&amp;nbsp; &lt;b&gt;&lt;i&gt;(&lt;/i&gt;&lt;/b&gt;&lt;i&gt;[....]&lt;/i&gt;&lt;b&gt;&lt;i&gt;)+&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;?&lt;/b&gt;&lt;/i&gt;, &lt;i&gt;&lt;b&gt;*&lt;/b&gt;&lt;/i&gt; e &lt;i&gt;&lt;b&gt;+&lt;/b&gt;&lt;/i&gt; são gananciosos. Basicamente lê a fonte toda e trabalha da direita para a esquerda. Assim que encontrar pára. Dá o resultado mais longo.&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;b&gt;??&lt;/b&gt;&lt;/i&gt;, &lt;i&gt;&lt;b&gt;*?&lt;/b&gt;&lt;/i&gt; e &lt;i&gt;&lt;b&gt;+?&lt;/b&gt;&lt;/i&gt; são relutantes. Encontra o resultado mínimo.&lt;/li&gt;&lt;/ul&gt;Com os quantificadores gananciosos, o método &lt;i&gt;find&lt;/i&gt; da classe &lt;i&gt;Matcher&lt;/i&gt; pode retornar resultados (matches) do tamanho 0 (zero) , nas seguintes condições:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Depois do último carácter da fonte&lt;/li&gt;&lt;li&gt;Entre carácteres depois de um resultado ter sido encontrado&lt;/li&gt;&lt;li&gt;No início da fonte&lt;/li&gt;&lt;li&gt;No início de uma fonte com tamanho zero&lt;/li&gt;&lt;/ul&gt;&lt;i&gt;&lt;u&gt;java.util.&lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Scanner.html"&gt;Scanner&lt;/a&gt;&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Usado para tokenização on-the-fly. Por defeito o delimitador é o espaço em branco.&lt;br /&gt;&lt;br /&gt;Métodos principais&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Scanner(InputStream)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Scanner(String)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Scanner(File)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;String findInLine(String regex)&lt;/i&gt; - Usado em loops. Retorna &lt;i&gt;null&lt;/i&gt; se não encontrar nada. Chamadas sucessivas encontram o próximo match.&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean hasNext()&lt;/i&gt; - Usado em loops. Não avança.&lt;/li&gt;&lt;li&gt;&lt;i&gt;String next()&lt;/i&gt; - Usado em loops. Obtém e avança para o próximo.&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolena hasNextInt() &lt;/i&gt; - Usado em loops. Não avança.&lt;/li&gt;&lt;li&gt;&lt;i&gt;int nextInt()&lt;/i&gt; - Usado em loops. Obtém e avança para o próximo.&lt;/li&gt;&lt;li&gt;&lt;i&gt; boolean hasNextBoolean()&lt;/i&gt; - Usado em loops. Não avança.&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean nextBoolean()&lt;/i&gt; - Usado em loops. Obtém e avança para o próximo.&lt;/li&gt;&lt;li&gt;&lt;i&gt;useDelimiter(String regex)&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Os métodos &lt;i&gt;hasXXX&lt;/i&gt; e &lt;i&gt;nextXXX&lt;/i&gt; existem para todos os primitivos excepto &lt;i&gt;char&lt;/i&gt;.&lt;br /&gt;Os métodos &lt;i&gt;nextXXX &lt;/i&gt;só devem ser chamados se o método correspondente &lt;i&gt;hasXXX&lt;/i&gt; retornar &lt;i&gt;true&lt;/i&gt;. Caso contrário pode dar excepção.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;String e Tokenizing&lt;/u&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;String[] split(String regex)&lt;/i&gt; - Deve ser usado em Strings relativamente pequenas.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;Os delimitadores usados no &lt;i&gt;Scanner&lt;/i&gt; e no split podem ser apenas expressões regulares. Exemplo: "&lt;i&gt;\d\d&lt;/i&gt;".&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Formatação com &lt;i&gt;printf&lt;/i&gt; e &lt;i&gt;format&lt;/i&gt; da classe &lt;i&gt;java.io.PrintStream&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Ambos os métodos funcionam com os mesmos parâmetros: &lt;i&gt;printf(String format, Object... argumentos)&lt;/i&gt;.&lt;br /&gt;O parâmetro &lt;i&gt;format&lt;/i&gt; pode conter simultaneamente informação normal de literais &lt;i&gt;String&lt;/i&gt; que não estão associados a quaisquer argumentos e dados de formatação específicos de argumentos.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Explicação da parte &lt;i&gt;format&lt;/i&gt;&lt;/u&gt;&lt;i&gt;&lt;u&gt;:&lt;/u&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i style="background-color: yellow;"&gt;%[arg_index$][flags][width][.precision] conversion&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="background-color: #f4cccc;"&gt;Nota&lt;/span&gt;: entre [] são opcionais&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;i style="background-color: yellow;"&gt;arg_index$&lt;/i&gt; - Um inteiro imediatamente seguido de &lt;i&gt;$&lt;/i&gt;. Indica qual argumento deve ser impresso nessa posição.&lt;br /&gt;&lt;br /&gt;&lt;i style="background-color: yellow;"&gt;flag&lt;/i&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;-&lt;/i&gt; -&amp;gt; Alinhar à esquerda&lt;/li&gt;&lt;li&gt;&lt;i&gt;+&lt;/i&gt; -&amp;gt; Incluir o sinal (+ ou -)&lt;/li&gt;&lt;li&gt;&lt;i&gt;0&lt;/i&gt; -&amp;gt; Preencher com zeros&lt;/li&gt;&lt;li&gt;&lt;i&gt;,&lt;/i&gt; -&amp;gt; Usar separadores específicos do &lt;i&gt;Locale&lt;/i&gt;&lt;/li&gt;&lt;li&gt;(&lt;i&gt; &lt;/i&gt;-&amp;gt; Colocar entre parêntesis os números negativos&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i style="background-color: yellow;"&gt;width&lt;/i&gt; - Indica o número mínimo de caracteres a imprimir.&lt;br /&gt;&lt;br /&gt;&lt;i style="background-color: yellow;"&gt;precision&lt;/i&gt; - Usado em números de vírgula flutuante e indica o número de dígitos depois da vírgula.&lt;br /&gt;&lt;br /&gt;&lt;i style="background-color: yellow;"&gt;conversion&lt;/i&gt; -O tipo de argumento a formatar:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;b&lt;/i&gt; - Booleano &lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;c&lt;/i&gt; - Carácter (char)&lt;/li&gt;&lt;li&gt;&lt;i&gt;d&lt;/i&gt; -Inteiro&lt;/li&gt;&lt;li&gt;&lt;i&gt;f&lt;/i&gt; - Vírgula flutuante&lt;/li&gt;&lt;li&gt;&lt;i&gt;s&lt;/i&gt; - String&lt;/li&gt;&lt;/ul&gt;Se o tipo indicado não condizer com o tipo de argumento uma &lt;i&gt;IllegalFormatConversionException&lt;/i&gt; ocorre (&lt;i&gt;RuntimeException&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Object.html"&gt;java.lang.Object&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;boolean equals(Object)&lt;/i&gt; - Este método, se não for overrided, apenas usa o operador &lt;i&gt;== &lt;/i&gt;para as comparações. Se este método não for overrided, então o objecto não será usável, por exemplo,&amp;nbsp; como chave em &lt;i&gt;Hashtables, &lt;/i&gt;pois a não ser que ainda se tenha referência para a chave, nunca a mesma será encontrada. Fazendo override a este método então deve-se fazer override ao método &lt;i&gt;hashcode&lt;/i&gt; (por causa do contrato do &lt;i&gt;equals &lt;/i&gt;e do&lt;i&gt; hashcode&lt;/i&gt;).&lt;/li&gt;&lt;li&gt;&lt;i&gt;int hashCode()&lt;/i&gt; - O overriding deste método deve usar as mesmas variáveis de instância usadas no overriding do método &lt;i&gt;equals&lt;/i&gt;. Por esta razão se for efectuado o override deste método então deve-se fazer também o overriding do método &lt;i&gt;equals&lt;/i&gt; (&lt;i&gt;contrato &lt;/i&gt;do hashcode e do &lt;i&gt;equals&lt;/i&gt;).&lt;/li&gt;&lt;li&gt;&lt;i&gt;String toString()&lt;/i&gt; - Se não for overrided, retorna o&lt;i&gt; nome_da_classe@hashcode&lt;/i&gt; do objecto (hexadecimal sem sinal).&lt;/li&gt;&lt;li&gt;&lt;i&gt;final void notify()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;final void notifyAll()&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;final void wait()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;void finalize()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Contrato do &lt;i&gt;equals()&lt;/i&gt;&lt;/b&gt;&lt;b&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Reflexivo: &lt;i&gt;x.equals(x)&lt;/i&gt; deve retornar &lt;b&gt;true&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Simétrico: &lt;i&gt;x.equals(y)&lt;/i&gt; = &lt;b&gt;true &lt;/b&gt;se e só se y.equals(x) = &lt;b&gt;true&lt;/b&gt;&lt;/li&gt;&lt;li&gt;Transitivo: &lt;i&gt;x.equals(y) = &lt;b&gt;true &lt;/b&gt;e y.equals(z) = &lt;b&gt;true &lt;/b&gt;=&amp;gt; x.equals(z) = &lt;b&gt;true&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Consistente: Múltiplas invocações de &lt;i&gt;x.equals(y)&lt;/i&gt; consistentemente retornam &lt;b&gt;true&lt;/b&gt; ou consistentemente retornam &lt;b&gt;false&lt;/b&gt;, desde que os objectos não sejam modificados na informação usada no &lt;i&gt;equals&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;i&gt;x.equals(null) = &lt;b&gt;false&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;Se &lt;i&gt;x.equals(y) = &lt;b&gt;true &lt;/b&gt;=&amp;gt; x.hashcode() = y.hashcode()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Contrato do &lt;i&gt;hashcode()&lt;/i&gt; &lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Consistente: Múltiplas invocações no mesmo objecto, durante a execução de uma mesma aplicação Java, retornam o mesmo inteiro, desde que nenhuma informação usada na comparação &lt;i&gt;equals&lt;/i&gt; seja alterada.&lt;/li&gt;&lt;li&gt;Se &lt;i&gt;x.equals(y) = &lt;b&gt;true &lt;/b&gt;=&amp;gt; x.hashcode() = y.hashcode()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Se &lt;i&gt;x.equals(y) = false&lt;/i&gt; &lt;b&gt;não implica&lt;/b&gt; que &lt;i&gt;x.hashcode() &amp;lt;&amp;gt; y.hascode()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Se &lt;i&gt;x.hascode() = y.hashcode&lt;/i&gt; &lt;b&gt;não implica&lt;/b&gt; que &lt;i&gt;x.equals(y) = &lt;b&gt;true&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;i style="background-color: #f4cccc;"&gt;Nota&lt;/i&gt;: Variáveis &lt;i&gt;transient&lt;/i&gt; não são apropriadas para uso no &lt;i&gt;equals&lt;/i&gt; e &lt;i&gt;hashcode&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Ordem Natural dos Caracteres&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Espaço em branco &amp;lt; UPPERCASE &amp;lt; lowercase&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Collections&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://2.bp.blogspot.com/-6JHj8h8ZOlM/TklAMD44i6I/AAAAAAAAANE/BVTwMtOOSxY/s1600/Collections.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"&gt;&lt;img border="0" height="500" src="http://2.bp.blogspot.com/-6JHj8h8ZOlM/TklAMD44i6I/AAAAAAAAANE/BVTwMtOOSxY/s640/Collections.png" width="800" /&gt;&lt;/a&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Propriedades principais das colecções&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;ArrayList e Vector&lt;/i&gt;&lt;/span&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style="font-size: small;"&gt;-&lt;b&gt; &lt;/b&gt;Iteração rápida e acesso aleatório rápido.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;LinkedList&lt;/i&gt; - Iteração rápida e remoção rápida. Boa para adicionar elementos ao início ou ao fim. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Serve para concretizar uma pilha ou fila. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;HashSet&lt;/i&gt; - &lt;/span&gt;&lt;span style="font-size: small;"&gt;Acesso rápido. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Sem duplicados e sem ordem. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;LinkedHashSet&lt;/i&gt; - Sem duplicados e com ordem de iteração pela a de inserção.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;span style="font-size: small;"&gt; &lt;/span&gt;&lt;/i&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;TreeSet&lt;/i&gt; - &lt;/span&gt;&lt;span style="font-size: small;"&gt;Sem duplicados. &lt;/span&gt;&lt;span style="font-size: small;"&gt;Por defeito a ordenação é feita pela ordem natural (ascendente). &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;EnumMap &lt;/i&gt;- A chave tem de ser um &lt;i&gt;enum&lt;/i&gt; e tem de pertencer ao tipo indicado. Chaves &lt;i&gt;null&lt;/i&gt; não são permitidas (dá &lt;i&gt;NullPointerException&lt;/i&gt;). Valores &lt;i&gt;null&lt;/i&gt; são permitidos.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;HashMap&amp;nbsp;&lt;/i&gt; - Actualizações rápidas. Só uma chave &lt;i&gt;null &lt;/i&gt;e múltiplos valores &lt;i&gt;null&lt;/i&gt;. &lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;Hashtable &lt;/i&gt;- Actualizações rápidas. &lt;i&gt;null&lt;/i&gt; não é permitido em lado nenhum.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;LinkedHashMap&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;- Iteração rápida. Mantém a ordem de inserção. Itera pela ordem de inserção ou último acesso.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;TreeMap&lt;/i&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; &lt;/i&gt;- Por defeito, a ordenação é feita pela ordem natural ascendente.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt; ConcurrentSkipListMap&lt;/i&gt; - log(n). &lt;i&gt;null&lt;/i&gt; não permitidos em lado nenhum. Ordem natural.&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;i&gt;PriorityQueue&lt;/i&gt; - Priority-in, Priority-out. Os elementos são ordenados pela sua prioridade relativa. O construtor pode levar um comparador no 2º argumento.&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;br /&gt;&lt;table border="1"&gt;&lt;tbody&gt;&lt;tr&gt; &lt;th&gt;Classe&lt;/th&gt;  &lt;th&gt;Map&lt;/th&gt;  &lt;th&gt;Set&lt;/th&gt;  &lt;th&gt;List&lt;/th&gt;  &lt;th&gt;Queue&lt;/th&gt;  &lt;th&gt;Ordered&lt;/th&gt;  &lt;th&gt;Sorted&lt;/th&gt;  &lt;th&gt;Identificadores&lt;/th&gt; &lt;th&gt;Duplicados&lt;/th&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;HashMap&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Únicos(chave)&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;Hashtable&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Únicos(chave)&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;TreeMap&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Ordem Natural ou Costumizável&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Únicos(chave)&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;LinkedHashMap&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Ordem de Inserção ou por Último Acesso&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Únicos(chave)&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;ConcurrentSkipListMap&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Ordem Natural&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;EnumMap&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Únicos(chave)&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim (valores)&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;HashSet&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;TreeSet&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Ordem Natural ou Costumizável&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;LinkedHashSet&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Ordem de Inserção&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;ArrayList&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Índice&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;Vector&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Índice&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;LinkedList&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Índice&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;Não&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt; &lt;/tr&gt;&lt;tr&gt; &lt;td&gt;&lt;i&gt;PriorityQueue&lt;/i&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: red; text-align: center;"&gt;&lt;br /&gt;&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;X&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Por Prioridades ou Ordem Natural&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;NA&lt;/td&gt;&lt;td style="background-color: lime; text-align: center;"&gt;Sim&lt;/td&gt; &lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Métodos principais da interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Set.html"&gt;java.util.Set&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean add(Object)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean remove(Object)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;int size() &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean contains(Object)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Iterator iterator()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object[] toArray()&lt;/i&gt;&lt;b&gt;&lt;i&gt; &lt;/i&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object[] toArray(Object[])&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Métodos principais d&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;a interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/List.html"&gt;java.util.List&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean add(int, Object) &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean add(Object)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object get(int)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean remove(int) &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean remove(Object)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;int size() &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean contains(Object)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;int indexOf(Object) &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Iterator iterator()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object[] toArray()&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object[] toArray(Object[])&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Métodos principais d&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;a interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Queue.html"&gt;java.util.Queue&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object peek() - &lt;/i&gt;Retorna o primeiro elemento da fila &lt;u&gt;sem o remover&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object pool() &lt;/i&gt;-&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt; &lt;/i&gt;Retorna o primeiro elemento da fila &lt;u&gt;removendo-o&lt;/u&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;boolean add(Object)&lt;/i&gt; - Adiciona o elemento à fila&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean offer(Object)&lt;/i&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt; - Adiciona o elemento à fila&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Métodos principais d&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;a interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Map.html"&gt;java.util.Map&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object put(Object key, Object value) &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object get(Object key)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Object&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt; remove(Object key)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;int size() &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean contains(Object key)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean contains(Object value)&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Set keySet()&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;As chaves nos &lt;i&gt;Map&lt;/i&gt; devem (&lt;u&gt;não é obrigatório mas nada será retornado&lt;/u&gt;) fazer override de &lt;i&gt;equals()&lt;/i&gt; e &lt;i&gt;hashCode()&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Não esquecer que os &lt;i&gt;Maps&lt;/i&gt; funcionam em dois passos:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Usam o método &lt;i&gt;hashCode()&lt;/i&gt; para encontrar o balde certo (se o &lt;i&gt;hashCode&lt;/i&gt; do objecto usado como chave mudar, o &lt;i&gt;Map&lt;/i&gt; irá procurar o objecto no local errado!)&lt;/li&gt;&lt;li&gt;Usam o método &lt;i&gt;equals()&lt;/i&gt; para encontrar o objecto no balde&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;Métodos principais d&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;a classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Collections.html"&gt;java.util.Collections&lt;/a&gt;&lt;/span&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;int Collections.binarySearch(List, Object)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;- Os objectos na lista têm de implementar Comparable!&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;int Collections.binarySearch(List, Object, Comparator)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt; &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;void Collections.sort(List) -&lt;/i&gt; Os objectos na lista têm de implementar Comparable!&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;void Collections.sort(List, Comparator)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Comparator &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Collections.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;reverseOrder(List)&lt;/i&gt; - &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;Os objectos na lista têm de implementar Comparable! &lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Comparator &lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;Collections.&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;reverseOrder(Comparator)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;b&gt;&lt;span style="font-size: small;"&gt;&lt;span style="font-weight: normal;"&gt;&lt;i&gt;void Collections.reverse(List)&lt;/i&gt;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Arrays.html"&gt;java.util.Arrays&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;int Arrays.binarySearch(Object[], Object)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;int Arrays.binarySearch(Object[], Object, Comparator)&amp;nbsp;&lt;/i&gt;&lt;i&gt; &lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;void Arrays.sort(Object[]) - &lt;/i&gt;Os objectos no Object[] têm de implementar Comparable!&lt;/li&gt;&lt;li&gt;&lt;i&gt;void Arrays.sort(Object[], Comparator)&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;List Arrays.asList(Object[]) &lt;/i&gt;- A lista e o array ficam ligados um ao outro. O Object[] não pode ser um array de primitivos&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean equals(Object[], Object[])&lt;/i&gt; &lt;/li&gt;&lt;li&gt;&lt;i&gt;String toString(Object[]) &lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Métodos &lt;/b&gt;&lt;b&gt;importantes na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/TreeSet.html"&gt;java.util.TreeSet&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Object ceiling(Object)&lt;/i&gt; - Elemento mais pequeno, maior ou igual ao objecto&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object heigher(Object)&lt;/i&gt; - Elemento mais pequeno, maior que o objecto&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object floor(Object)&lt;/i&gt; - Elemento maior, menor ou igual ao objecto&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object lower(Object)&lt;/i&gt; - Elemento maior, menor que o objecto&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object poolFirst() &lt;/i&gt;- Remove e devolve a primeira entrada&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object poolLast()&lt;/i&gt; - Remove e devolve a última entrada&lt;/li&gt;&lt;li&gt;&lt;i&gt; NavigableSet descendingSet()&lt;/i&gt; - Retorna um &lt;i&gt;NavigableSet&lt;/i&gt; por ordem inversa&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableSet/SortedSet headSet(Object, Boolean)&lt;/i&gt; - Retorna o subconjunto que termina no elemento &lt;i&gt;Object&lt;/i&gt; (*)&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableSet/SortedSet tailSet(Object, Boolean)&lt;/i&gt; - Retorna o subconjunto que começa no elemento &lt;i&gt;Object&lt;/i&gt; (*)&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableSet/SortedSet&amp;nbsp; subSet(Object start, Boolean, Object end, Boolean)&lt;/i&gt; - Retorna o subconjunto que começa no elemento &lt;i&gt;Object start&lt;/i&gt; e termina no elemento &lt;i&gt;Object end&lt;/i&gt; (*)&lt;i&gt;&lt;br /&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;&amp;nbsp;(*) &lt;/b&gt;- Os &lt;i&gt;Boolean&lt;/i&gt; são opcionais (Java 6). Indicam se o final é inclusive e retornam &lt;i&gt;NavigableSet&lt;/i&gt;. Caso não sejam usados os &lt;i&gt;Boolean&lt;/i&gt;, é retornado um &lt;i&gt;SortedSet&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos importantes na classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/TreeMap.html"&gt;java.util.TreeMap&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Object firstKey()&lt;/i&gt; - Retorna a primeira chave&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object ceilingKey(Key)&lt;/i&gt; - Retorna a menor chave, maior ou igual a &lt;i&gt;Key&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object heigherKey(Key)&lt;/i&gt; - Retorna a menor chave, maior que &lt;i&gt;Key&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object floorKey(Key)&lt;/i&gt; -Retorna a maior chave, menor ou igual a &lt;i&gt;Key&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object lowerKey(Key)&lt;/i&gt; -Retorna a maior chave, menor que &lt;i&gt;Key&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object poolFirstEntry()&lt;/i&gt; - Retorna e remove o primeiro par chave-valor&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object poolLastEntry()&lt;/i&gt; - Retorna e remove o último par chave-valor&lt;/li&gt;&lt;li&gt;&lt;i&gt;Map.entry lastEntry()&lt;/i&gt; -Maior chave no &lt;i&gt;Map&lt;/i&gt; ou &lt;i&gt;null&lt;/i&gt; se vazio.&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableMap descendingMap()&lt;/i&gt; -Retorna um &lt;i&gt;NavigableMap&lt;/i&gt; na ordem inversa&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableMap/SortedMap headMap(Key, Boolean) &lt;/i&gt; - Submapa terminado em &lt;i&gt;Key &lt;/i&gt;(*)&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableMap/SortedMap tailMap(Key, Boolean)&lt;/i&gt; -  Submapa começado em &lt;i&gt;Key inclusivé &lt;/i&gt;(*)&lt;/li&gt;&lt;li&gt;&lt;i&gt;NavigableMap/SortedMap subMap(Key start, Boolean, Key end, Boolean)&amp;nbsp;&lt;/i&gt; - Retorna o submapa começado em &lt;i&gt;start&lt;/i&gt; e terminado em &lt;i&gt;end&lt;/i&gt;  (*)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;(*) &lt;/b&gt;- Os &lt;i&gt;Boolean&lt;/i&gt; são opcionais (Java 6). Indicam se o final é inclusive e retornam &lt;i&gt;NavigableMap&lt;/i&gt;. Caso não sejam usados os &lt;i&gt;Boolean&lt;/i&gt;, é retornado um &lt;i&gt;SortedMap&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Os seis métodos de &lt;i&gt;TreeSet &lt;/i&gt;e &lt;i&gt;TreeMap&lt;/i&gt; que retornam subconjuntos, retornam subconjuntos que estão ligados aos conjuntos originais. Pode-se efectuar operações no subconjunto que irão afectar também o conjunto original. Se se adicionar/remover elementos ao conjunto original, estes serão igualmente adicionados/removidos do subconjunto &lt;b&gt;se os elementos estiveram dentro do intervalo&lt;/b&gt;. &lt;b&gt;Se se adicionar um elemento ao subconjunto que esteja fora do intervalo deste, irá atirar uma excepção.&lt;/b&gt; O mesmo não acontece se este mesmo elemento for adicionado ao conjunto original!&lt;br /&gt;&lt;br /&gt;No &lt;i&gt;TreeSet &lt;/i&gt;e no &lt;i&gt;TreeMap&lt;/i&gt; os seus elementos têm de implementar &lt;i&gt;Comparable&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Collections e Código Legado&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Na invocação de código legado com colecções que usam genéricos, se o código legado inserir algo na colecção que seja diferente do tipo especificado no genérico, &lt;b&gt;não irá dar erro de Runtime&lt;/b&gt; (embora se se usar o tipo guardado numa operação supostamente de outro tipo irá dar excepção). Contudo, em tempo de compilação, chamadas a métodos legados com colecções que usam genéricos e que inserem elementos nas colecções (se a inserção for invocada do código não legado) irá dar um aviso (warning) do género: A classe usa operações não seguras ou não checadas. Usar &lt;b&gt;-Xlint&lt;/b&gt; para ver detalhes.&lt;br /&gt;&lt;br /&gt;Tomar em atenção que os métodos "get" das colecções retornam &lt;b&gt;&lt;i&gt;Object&lt;/i&gt;&lt;/b&gt;. Se a colecção não usar &lt;i&gt;generics&lt;/i&gt;, então é obrigatório o uso de &lt;i&gt;casts&lt;/i&gt;, inclusive para primitivos e respectivos &lt;i&gt;wrappers&lt;/i&gt;. Não há &lt;i&gt;autoboxing&lt;/i&gt; automático. No "add" já há &lt;i&gt;autoboxing&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Pesquisa nas classes Arrays e Collections&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;O método &lt;i&gt;binarySearch&lt;/i&gt; das classes &lt;i&gt;Arrays &lt;/i&gt;e &lt;i&gt;Collections&lt;/i&gt; retorna:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&amp;gt;= 0&lt;/i&gt; - Índice do elemento procurado&lt;/li&gt;&lt;li&gt;&lt;i&gt;&amp;lt; 0&lt;/i&gt; - Índice que presenta o ponto de inserção. Para calcular devidamente: ABS(ponto de inserção -1)&lt;/li&gt;&lt;/ul&gt;&lt;span style="background-color: #999999;"&gt;&lt;/span&gt;Os Arrays/Collections têm de estar ordenados antes de se proceder à procura. Caso contrário os resultados serão imprevisíveis.&lt;br /&gt;&lt;br /&gt;Os Arrays/Collections têm de ser procurados com o mesmo tipo de ordenação que foi usado na ordenação dos mesmos (ordem natural ou usando um &lt;i&gt;Comparator&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;Em tudo o que envolva ordenação (Collections, Arrays, Sets ordenados, etc), os objectos têm de ser mutuamente comparáveis (do mesmo tipo)!&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Comparable.html"&gt;java.lang.Comparable&lt;/a&gt; - &lt;i&gt;(implements Comparable&lt;objecto&gt;)&lt;/objecto&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;i&gt;int compareTo(Object)&lt;/i&gt; - O Object pode ser implementado com o próprio tipo da classe (por causa dos &lt;i&gt;generics&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;b&gt;Interface &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Comparator.html"&gt;java.util.Comparator&lt;/a&gt;&amp;nbsp;&lt;/b&gt;&lt;b&gt; - &lt;i&gt;(implements Comparator&lt;objecto&gt;)&lt;/objecto&gt;&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;int compare(Object, Object)&lt;/i&gt;  - Os Objects podem ser implementados com o próprio tipo da classe (por causa dos &lt;i&gt;generics&lt;/i&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Métodos principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/util/Iterator.html"&gt;java.util.Iterator&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;boolean hasNext()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Object next()&lt;/i&gt;&lt;br /&gt;  &lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Generics&lt;/b&gt;&lt;br /&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt; &lt;br /&gt;A informação de &lt;i&gt;typing&lt;/i&gt; (do genérico) não existe em tempo de execução. &lt;b&gt;Só em tempo de compilação&lt;/b&gt;. Todo o código "&lt;i&gt;generics&lt;/i&gt;" é apenas para compilação.&lt;br /&gt;&lt;br /&gt;Com &lt;i&gt;generics&lt;/i&gt;, atribuir a uma referência de um supertipo, um objecto de um subtipo (ou do mesmo tipo) mas com um &lt;i&gt;generic&lt;/i&gt; diferente do declarado, nunca irá compilar com &lt;i&gt;generics&lt;/i&gt;. &lt;b&gt;O tipo de uma declaração de variável tem de ser igual ao tipo que se passa&lt;/b&gt;. Não funciona nem com super nem subtipos.&lt;br /&gt;&lt;br /&gt;Ou seja, o tipo de genérico da referência e o tipo de genérico do objecto ao qual se refere têm de ser idênticos. &lt;b&gt;O polimorfismo aplica-se apenas ao tipo base&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;span style="background-color: yellow;"&gt;Tipo_Base&lt;/span&gt; &amp;lt;&lt;span style="background-color: #3d85c6;"&gt;Tipo_Genérico&lt;/span&gt;&amp;gt; = &lt;span style="background-color: yellow;"&gt;Tipo_Base&lt;/span&gt;&amp;lt;&lt;span style="background-color: #3d85c6;"&gt;Tipo_Genérico&lt;/span&gt;&amp;gt;;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;O mesmo acontece na invocação de métodos. Não há polimorfismo com &lt;i&gt;generics&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;O polimorfismo é permitido nos arrays&lt;/b&gt;. Em runtime a JVM sabe o tipo dos arrays, mas não sabe o tipo das colecções (por causa do compilador apagar o tipo - &lt;i&gt;Type Erasure&lt;/i&gt;).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O uso de &lt;i&gt;Tipo1&lt;/i&gt;, indica ao compilador que se pode aceitar qualquer subtipo (&lt;i&gt;?&lt;/i&gt;)&lt;i&gt; &lt;/i&gt;de genérico do tipo de argumento declarado (&lt;i&gt;Tipo2&lt;/i&gt;). &lt;b&gt;Esta indicação implica que nenhum objecto possa ser adicionado à colecção&lt;/b&gt;. Se tal suceder um erro de compilação ocorre. Esta indicação é uma excepção à regra do não polimorfismo dos &lt;i&gt;generics&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;? extends &lt;/i&gt;- Usa-se quer para classes quer para interfaces.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O uso de &lt;i&gt;Tipo1&lt;/i&gt;, indica ao compilador que se pode aceitar qualquer tipo (&lt;i&gt;?&lt;/i&gt;) genérico do indicado (&lt;i&gt;Tipo2&lt;/i&gt;) e também qualquer supertipo do &lt;i&gt;Tipo2&lt;/i&gt;. Ou seja, toda a hierarquia superior do &lt;i&gt;Tipo2&lt;/i&gt; e o próprio &lt;i&gt;Tipo2&lt;/i&gt; são aceites. &lt;b&gt;Isto permite adicionar elementos à colecção&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;O uso de &lt;i&gt;Tipo1&lt;/i&gt;, indica ao compilador que se pode aceitar qualquer tipo (&lt;i&gt;?&lt;/i&gt;) genérico. &lt;b&gt;Contudo não se pode adicionar elementos à colecção&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Não se pode usar a notação &lt;i&gt;?&lt;/i&gt; (wildcard) na criação de objectos. Apenas é possível nas referências&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Criando classes genéricas (exemplos com classe genérica)&lt;/u&gt;:&lt;/i&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;public class Xpto&lt;t&gt;{...&lt;/t&gt;&lt;/i&gt; - Qualquer identificador Java é válido&lt;/li&gt;&lt;li&gt;&lt;i&gt;private List&lt;t&gt; xpto2;&lt;/t&gt;&lt;/i&gt; -Usar o tipo da classe para o tipo da lista&lt;/li&gt;&lt;li&gt;&lt;i&gt;public Xpto (List&lt;t&gt; x){...&lt;/t&gt;&lt;/i&gt; -Construtor que recebe uma lista do tipo da classe&lt;/li&gt;&lt;li&gt;&lt;i&gt;public T getXpto(){...&lt;/i&gt; -Retorna-se &lt;i&gt;T&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;public void returnX(T qq)...&lt;/i&gt; -Recebe-se &lt;i&gt;T&lt;/i&gt; como parâmetro&lt;/li&gt;&lt;li&gt;&lt;i&gt;T instânciaDeClasse&lt;/i&gt; - Como tipo de variável de classe&lt;/li&gt;&lt;li&gt;&lt;i&gt;T[] array&lt;/i&gt; - Como tipo de array&lt;/li&gt;&lt;li&gt;&lt;i&gt;public class useTwo&lt;t, x=""&gt;{&lt;/t,&gt;&lt;/i&gt; -Dois tipo parametrizados&lt;/li&gt;&lt;li&gt;&lt;i&gt;public class Bla&lt;t algo="" extends=""&gt;{... &lt;/t&gt;&lt;/i&gt; -Género de limitador de tipo&lt;/li&gt;&lt;/ul&gt;&lt;u&gt;&lt;i&gt;Criando métodos construtores genéricos (exemplos em que a classe não é genérica. Só os métodos)&lt;/i&gt;&lt;/u&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt; &lt;i&gt;public &lt;t&gt; void make(T t){...&lt;/t&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;public &lt;t extends="" tipo=""&gt; doda(T t){...&lt;/t&gt;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;public &lt;t&gt; Radio(T t){...&lt;/t&gt;&lt;/i&gt; - Construtor&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;i&gt;&lt;u&gt;Convenções na documentação de API's&lt;/u&gt;&lt;/i&gt;:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Element (colecções)&lt;/li&gt;&lt;li&gt;&lt;i&gt;&lt;t&gt;&lt;/t&gt;&lt;/i&gt; Type (usado em tudo excepto colecções)&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;b&gt;Inner Classes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;O código na &lt;i&gt;Inner Class&lt;/i&gt; pode aceder aos&amp;nbsp;&lt;b&gt; &lt;/b&gt;membros da &lt;i&gt;enclosing (outer) class&lt;/i&gt;, como se a &lt;i&gt;inner class&lt;/i&gt; fosse parte da &lt;i&gt;outer class&lt;/i&gt;. Uma instância da &lt;i&gt;inner class&lt;/i&gt; tem acesso a &lt;b&gt;todos&lt;/b&gt; os membros da &lt;i&gt;outer class&lt;/i&gt;, incluindo aqueles marcados como &lt;i&gt;private&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;As&lt;i&gt; inner classes&lt;/i&gt; são definidas dentro das &lt;i&gt;{}&lt;/i&gt; da &lt;i&gt;outer class&lt;/i&gt;.&lt;br /&gt;Uma &lt;i&gt;inner class&lt;/i&gt; não pode ter quaisquer declarações &lt;b&gt;static&lt;/b&gt;.&lt;br /&gt;Para se aceder à &lt;i&gt;inner&lt;/i&gt; &lt;i&gt;class&lt;/i&gt; tem de ser ter uma instância da &lt;i&gt;outer class&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;&lt;u&gt;Exemplos:&lt;/u&gt;&lt;br /&gt;Instanciar uma &lt;i&gt;inner class&lt;/i&gt; de dentro da &lt;i&gt;outer class&lt;/i&gt;: &lt;i&gt;new InnerClass();&lt;/i&gt;&lt;br /&gt;Instanciar uma &lt;i&gt;inner class&lt;/i&gt; de fora da &lt;i&gt;outer class&lt;/i&gt;: &lt;i&gt;MyOuter.MyInner x = MyOuter.new MyInner();&lt;/i&gt; (*)&lt;br /&gt;Referenciar a &lt;i&gt;inner class&lt;/i&gt; dentro dela própria: &lt;i&gt;this&lt;/i&gt;&lt;br /&gt;Referenciar a instância da &lt;i&gt;outer class&lt;/i&gt; dentro da &lt;i&gt;inner class&lt;/i&gt;: &lt;i&gt;MyOuter.this&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;(*) Tem mesmo de se usar o nome da classe. Não se pode usar a instância.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Method-Local Inner Classes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Definida dentro de um método. Só pode ser instanciada dentro do método onde é declarada mas depois da declaração. Pode aceder a todos os membros da &lt;i&gt;outer class&lt;/i&gt; (mesmo os privados). Contudo não consegue ver as variáveis locais do método a não ser que sejam marcadas como &lt;b&gt;final&lt;/b&gt;. Este tipo de classes pode ser criada dentro de métodos estáticos (com as mesmas restrições aplicáveis a métodos estáticos).&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Anonymous Inner Classes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Declaram uma nova classe que não tem nome, mas que é uma subclasse do tipo de declarado no &lt;b&gt;new&lt;/b&gt;.&lt;br /&gt;&lt;br /&gt;Ex:&lt;i&gt; Popcorn p = new Popcorn(){....};&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Também pode implementar uma interface.&lt;br /&gt;Tomar em atenção que só faz sentido implementar ou fazer overriding a métodos da superclasse, pois a variável de referência é sempre a da interface/superclasse (no exemplo acima: &lt;i&gt;Popcorn&lt;/i&gt;). Contudo é possível fazer overloading ou criar novos métodos. Estes nunca poderão é ser invocados de fora.&lt;br /&gt;&lt;br /&gt;Aplicam-se as mesmas regras das &lt;i&gt;inner classes&lt;/i&gt;&lt;b&gt;.&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Argument-Defined Anonymous Inner Classes&lt;/b&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;Definida mesmo dentro de uma chamada a um método como argumento.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Aplicam-se as mesmas regras das &lt;i&gt;inner classes&lt;/i&gt;.&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;b&gt; &lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Static Nested Classes&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;É pura e simplesmente um membro estático da &lt;i&gt;enclosing class&lt;/i&gt;. Aplicam-se todas as restrições dos métodos &lt;i&gt;static&lt;/i&gt;.&lt;br /&gt;&lt;br /&gt;Instanciação de fora: &lt;i&gt;Outer,Nest x = new Outer.Nest();&lt;/i&gt;&lt;b&gt;&lt;/b&gt;&lt;br /&gt;Instanciação dentro da Outer é feita de modo normal.&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Nota&lt;/b&gt;&lt;/u&gt;: &lt;i&gt;Tomar em atenção que nas Anonymous &lt;/i&gt;&lt;i&gt;Inner Classes e &lt;/i&gt;&lt;i&gt;Argument-Defined Anonymous Inner Classes os construtores são invocados! Ex: new Popcorn() - Invoca o construtor vazio. &lt;/i&gt;&lt;i&gt;new Popcorn(10) - O construtor recebe um &lt;/i&gt;&lt;i&gt;int, etc.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos Principais da classe &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Thread.html"&gt;java.lang.Thread &lt;/a&gt;(implements &lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Runnable.html"&gt;java.lang.Runnable&lt;/a&gt;)&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;Thread()&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Thread(String name)&lt;/i&gt;&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;Thread(Runnable) -&lt;/i&gt; Neste caso o método &lt;i&gt;run()&lt;/i&gt; invocado é o da instância passada.&lt;/li&gt;&lt;li&gt;&lt;i&gt;Thread(Runnable, String name)&lt;/i&gt;&lt;i&gt; -&lt;/i&gt; Neste caso o método &lt;i&gt;run()&lt;/i&gt; invocado é o da instância passada.&lt;/li&gt;&lt;li&gt;&lt;i&gt;public void run()&lt;/i&gt; - A classe &lt;i&gt;Thread&lt;/i&gt; espera que exista o método &lt;i&gt;run()&lt;/i&gt; sem argumentos, e executa este método numa chamada separada (numa &lt;i&gt;stack &lt;/i&gt;diferente) depois da thread começar. Este método é invocado pelo s&lt;i&gt;tart()&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;i&gt;start()&lt;/i&gt; - Invoca o método &lt;i&gt;run()&lt;/i&gt;. Começa a nova thread de execução. A thread passa para o estado &lt;i&gt;Runnable&lt;/i&gt;. Assim que poder executar invoca o &lt;i&gt;run()&lt;/i&gt;.&lt;b&gt; O método &lt;i&gt;start()&lt;/i&gt; apenas pode ser invocado uma vez&lt;/b&gt;. Uma &lt;i&gt;IllegalThreadStateException&lt;/i&gt; (não checada) é atirada se o método for invocado mais do que uma vez.&lt;/li&gt;&lt;li&gt;&lt;i&gt;boolean isAlive()&lt;/i&gt; - &lt;i&gt;true&lt;/i&gt; se o método &lt;i&gt;start()&lt;/i&gt; já foi invocado; &lt;i&gt;false&lt;/i&gt; caso &lt;i&gt;start()&lt;/i&gt; ainda não tenha sido invocado ou se o método &lt;i&gt;run()&lt;/i&gt; já terminou.&lt;/li&gt;&lt;li&gt;&lt;i&gt;public final void join() throws InterruptedException&lt;/i&gt; - Faz com que uma thread espere até que a outra entre no estado &lt;i&gt;Dead&lt;/i&gt;.&lt;/li&gt;&lt;li&gt;&lt;i&gt; String getName()&lt;/i&gt; - Devolve o nome da thread&lt;/li&gt;&lt;li&gt;&lt;i&gt;static Thread currentThread() &lt;/i&gt;- Devolve a corrente thread de execução&lt;/li&gt;&lt;li&gt;&lt;i&gt;void setName(String)&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;long getId()&lt;/i&gt; - Devolve o id da thread&lt;/li&gt;&lt;li&gt;&lt;i&gt;static void sleep(long milis) throws InterruptedException&lt;/i&gt; -&amp;nbsp; (*)&lt;/li&gt;&lt;li&gt;&lt;i&gt;static void yeld()&lt;/i&gt; - Faz com que a thread passe do estado &lt;i&gt;Running&lt;/i&gt; para o estado &lt;i&gt;Runnable&lt;/i&gt;. Nada é garantido [dependa da JVM] (*)&lt;i&gt;&amp;nbsp;&lt;/i&gt;&lt;/li&gt;&lt;li&gt;&lt;i&gt;public final setPriority(int)&lt;/i&gt; - Inteiro entre 1 e 10 (depende a JVM).&lt;i&gt;&amp;nbsp;&lt;/i&gt; &lt;/li&gt;&lt;/ul&gt;(*) - Não libertam os locks &lt;br /&gt;&lt;br /&gt;&lt;b&gt;Métodos Principais da Interface&amp;nbsp;&lt;/b&gt;&lt;b&gt;&lt;a href="http://download.oracle.com/javase/6/docs/api/java/lang/Runnable.html"&gt;java.lang.Runnable&lt;/a&gt;&lt;/b&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;i&gt;&amp;nbsp;public void run()&lt;/i&gt; - Comportamento igual ao método &lt;i&gt;run()&lt;/i&gt; da classe &lt;i&gt;Thread&lt;/i&gt;. É invocado pelo &lt;i&gt;start()&lt;/i&gt;.&lt;/li&gt;&lt;/ul&gt;&amp;nbsp;Para correr uma &lt;i&gt;Runnable&lt;/i&gt;:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Criar a classe que implementa &lt;i&gt;Runnable&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Passar a instância para dentro de uma nova Thread&lt;i&gt; &lt;/i&gt;(&lt;i&gt;new Thread(Runnable)&lt;/i&gt;)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;&lt;u&gt;&lt;b&gt;Nota&lt;/b&gt;&lt;/u&gt; : &lt;i&gt;Tomar em atenção&lt;/i&gt; &lt;i&gt;que a invocação directa do método run() (sem ser pelo start()) não cria um nova thread de execução!&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;hr /&gt;&lt;br /&gt;&lt;br /&gt;&lt;h1&gt;Continua....&lt;/h1&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5604103978601471366?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5604103978601471366/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5604103978601471366' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5604103978601471366'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5604103978601471366'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/07/conjunto-de-notas-usadas-para.html' title='Conjunto de Notas Usadas para a Certificação OCPJP 6 (1Z0-851)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/-9TodNm-hQ6g/Tj_jffbyUDI/AAAAAAAAAM8/_5tAXxgAzvQ/s72-c/RuntimeException.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4814924383411302545</id><published>2011-07-19T14:29:00.002+01:00</published><updated>2011-07-19T14:29:45.460+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Lista de todas as tabelas de sistema SQL Oracle</title><content type='html'>Ver em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.techonthenet.com/oracle/sys_tables/"&gt;http://www.techonthenet.com/oracle/sys_tables/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4814924383411302545?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4814924383411302545/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4814924383411302545' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4814924383411302545'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4814924383411302545'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/07/lista-de-todas-as-tabelas-de-sistema.html' title='Lista de todas as tabelas de sistema SQL Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7029531715649346510</id><published>2011-06-03T19:20:00.001+01:00</published><updated>2011-06-06T11:00:18.641+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Esquemas e Papéis (Roles) conhecidos em SQL Oracle</title><content type='html'>Consultar Roles conhecidos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://psoug.org/reference/roles.html"&gt;http://psoug.org/reference/roles.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e&lt;br /&gt;&lt;br /&gt;Conhecer Esquemas conhecidos: &lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.adp-gmbh.ch/ora/misc/known_schemas.html"&gt;&amp;nbsp;http://www.adp-gmbh.ch/ora/misc/known_schemas.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7029531715649346510?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7029531715649346510/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7029531715649346510' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7029531715649346510'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7029531715649346510'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/06/esquemas-e-papeis-roles-conhecidos-em.html' title='Esquemas e Papéis (Roles) conhecidos em SQL Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5640694292738630579</id><published>2011-05-31T14:17:00.001+01:00</published><updated>2011-05-31T14:18:12.232+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Ver código fonte Java da Base de Dados</title><content type='html'>&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&lt;span style="font-family: Arial,Helvetica,sans-serif;"&gt;O SQL seguinte permite ver o código fonte Java armazenado numa BD Oracle (em Java Sources). Tomar em atenção aos valores de &lt;i&gt;&lt;b&gt;v&lt;/b&gt;&lt;/i&gt; e &lt;i&gt;&lt;b&gt;i&lt;/b&gt;&lt;/i&gt; caso seja preciso aumentar os valores caso a fonte seja maior do que o especificado.&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;DECLARE&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; b CLOB;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v VARCHAR2 (9000);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i INTEGER;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BEGIN&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_LOB.createtemporary (b, FALSE);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; dbms_java.export_source ('JSendEmail', 'MDC', b);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; i := 9000;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_LOB.read (b, i, 1, v);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DBMS_OUTPUT.put_line (v);&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: &amp;quot;Courier New&amp;quot;,Courier,monospace;"&gt;&amp;nbsp;&amp;nbsp; END;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5640694292738630579?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5640694292738630579/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5640694292738630579' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5640694292738630579'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5640694292738630579'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/05/ver-codigo-fonte-java-da-base-de-dados.html' title='Ver código fonte Java da Base de Dados'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6983603143808366343</id><published>2011-05-05T17:28:00.001+01:00</published><updated>2011-05-05T17:28:25.386+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='linha comandos'/><title type='text'>Apagar directorias vazias em Linux</title><content type='html'>&lt;pre class="alt2" dir="ltr" style="border: 1px inset; height: 34px; margin: 0px; overflow: auto; padding: 6px; text-align: left; width: 640px;"&gt;find -depth -type d -empty -exec rmdir {} \;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6983603143808366343?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6983603143808366343/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6983603143808366343' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6983603143808366343'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6983603143808366343'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/05/apagar-directorias-vazias-em-linux.html' title='Apagar directorias vazias em Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5050130146861123533</id><published>2011-04-06T11:41:00.000+01:00</published><updated>2011-04-06T11:41:36.224+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>Recuperação de Sessões Remote Desktop</title><content type='html'>Em Windows quando se trabalha com Remote Desktop para ligar a servidores por exemplo, por vezes ocorre que a sessão fica inactiva não sendo mais possível entrar na sessão.&lt;br /&gt;&lt;br /&gt;Para recuperar a dita sessão é necessário entrar no servidor, aceder ao Terminal Services Manager e escolher a sessão a recuperar. Existem várias opções. Pode-se fazer por exemplo &lt;i&gt;Connect &lt;/i&gt;para entrar nessa sessão e continuar o trabalho.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5050130146861123533?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5050130146861123533/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5050130146861123533' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5050130146861123533'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5050130146861123533'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/04/recuperacao-de-sessoes-remote-desktop.html' title='Recuperação de Sessões Remote Desktop'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6201582625830906002</id><published>2011-04-05T14:52:00.003+01:00</published><updated>2011-07-14T19:26:56.100+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='certificados'/><category scheme='http://www.blogger.com/atom/ns#' term='exportar'/><category scheme='http://www.blogger.com/atom/ns#' term='apache directory studio'/><title type='text'>Exportação de certificados do Apache Directory Studio</title><content type='html'>Eis como (Windows):&lt;br /&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&amp;nbsp;Numa linha de comandos ir até à directoria: &lt;i&gt;c:\Users\&amp;lt;utilizador&amp;gt;\.ApacheDirectoryStudio\.metadata\.plugins\org.apache.directory.studio.connection.core&lt;/i&gt;&lt;/li&gt;&lt;li&gt;Os certificados encontram-se no ficheiro &lt;i&gt;&lt;b&gt;permanent.jks&lt;/b&gt;&lt;/i&gt;&lt;/li&gt;&lt;/ul&gt;Usar a ferramenta java &lt;b&gt;keytool&lt;/b&gt; para listar e exportar os certificados.&lt;br /&gt;&lt;br /&gt;Para listar os certificados existentes: &lt;br /&gt;&lt;br /&gt;&lt;i&gt;%JAVA_HOME%\bin\keytool -list -keystore permanent.jks -v&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;A Palavra-chave por defeito da keystore é: &lt;i&gt;&lt;b&gt;changeit&lt;/b&gt;&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Da listagem anterior obter o alias que corresponde ao certificado a exportar.&lt;br /&gt;&lt;i&gt;&lt;b&gt; &lt;/b&gt;&lt;/i&gt;&lt;br /&gt;Para exportar:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;i&gt;%JAVA_HOME%\bin\keytool -exportcert -alias &amp;lt;alias a exportar&amp;gt; -keystore permanent.jks -file &amp;lt;ficheiro_que_ira_conter_o_certificado&amp;gt;&lt;/i&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6201582625830906002?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6201582625830906002/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6201582625830906002' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6201582625830906002'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6201582625830906002'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/04/exportacao-de-certificados-do-apache.html' title='Exportação de certificados do Apache Directory Studio'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-9200354164225864228</id><published>2011-03-30T19:04:00.002+01:00</published><updated>2011-03-30T19:06:20.589+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='remote desktop'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><title type='text'>CTRL + ALT + DEL em Remote Desktop</title><content type='html'>Pois, CTRL + ALT + DEL com o Remote Desktop não funciona como esperado. Em vez de abrir o gestor na máquina remota abre o da máquina local. Para ultrapassar este problema usar:&lt;br /&gt;CTRL + ALT + END.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-9200354164225864228?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/9200354164225864228/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=9200354164225864228' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9200354164225864228'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9200354164225864228'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/03/ctrl-alt-del-em-remote-desktop.html' title='CTRL + ALT + DEL em Remote Desktop'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1810067321265137588</id><published>2011-03-18T19:31:00.002Z</published><updated>2011-03-18T19:31:55.816Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='conversores'/><category scheme='http://www.blogger.com/atom/ns#' term='texto latino'/><category scheme='http://www.blogger.com/atom/ns#' term='html'/><title type='text'>Conversor de texto latino para entidades HTML</title><content type='html'>Disponível em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.satya-weblog.com/tools/latin1-encoding-tool.php"&gt;http://www.satya-weblog.com/tools/latin1-encoding-tool.php&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1810067321265137588?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1810067321265137588/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1810067321265137588' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1810067321265137588'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1810067321265137588'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/03/conversor-de-texto-latino-para.html' title='Conversor de texto latino para entidades HTML'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6004752196052369194</id><published>2011-03-18T11:41:00.001Z</published><updated>2011-03-18T11:46:20.902Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='conversores'/><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><title type='text'>Conversão de texto para Unicode e não só</title><content type='html'>Disponível em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rishida.net/tools/conversion/"&gt;http://rishida.net/tools/conversion/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6004752196052369194?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6004752196052369194/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6004752196052369194' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6004752196052369194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6004752196052369194'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/03/conversao-de-texto-para-unicode-e-nao.html' title='Conversão de texto para Unicode e não só'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5488575658864887722</id><published>2011-02-23T14:13:00.001Z</published><updated>2011-02-23T14:14:20.117Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>Editor online de expressões regulares (regex)</title><content type='html'>Um autêntico facilitador na construção de expressões regulares:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://gskinner.com/RegExr/"&gt;http://gskinner.com/RegExr/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;É usar e abusar! :-)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5488575658864887722?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5488575658864887722/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5488575658864887722' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5488575658864887722'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5488575658864887722'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/02/editor-online-de-expressoes-regulares.html' title='Editor online de expressões regulares (regex)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2002064414385035648</id><published>2011-02-22T09:47:00.002Z</published><updated>2011-02-22T10:22:13.616Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='red hat'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><title type='text'>Montar interfaces em Redhat Linux</title><content type='html'>&lt;p&gt;Em Redhat Linux os nomes das interfaces começam com ethX, sendo a primeira a eth0.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para atribuir um endereço IP: &lt;span style="font-weight: bold;"&gt;ifconfig ethX YYY.YYY.YYY.YYY up&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Para mandar uma interface abaixo: &lt;span style="font-weight: bold;"&gt;ifconfig ethX down&lt;/span&gt;&lt;/p&gt;Caso o ficheiro de configuração da interface não exista em &lt;span style="font-weight: bold;"&gt;/etc/sysconfig/network-scripts/&lt;/span&gt; criar um denominado&lt;span style="font-weight: bold;"&gt; ifcfg-ethX&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Aqui está um exemplo do conteúdo de um ifcfg-eth0:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;DEVICE=eth0&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;ONBOOT=yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;BOOTPROTO=static&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;IPADDR=XXX.XXX.XXX.XXX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;NETMASK=XXX.XXX.XXX.XXX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;GATEWAY=XXX.XXX.XXX.XXX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;HWADDR=XX:XX:XX:XX:XX:XX&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2002064414385035648?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2002064414385035648/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2002064414385035648' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2002064414385035648'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2002064414385035648'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/02/montar-interfaces-em-redhat-linux.html' title='Montar interfaces em Redhat Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3632126428292394916</id><published>2011-02-04T11:39:00.001Z</published><updated>2011-02-04T11:40:19.017Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>RegEx para remover linhas vazias de um ficheiro</title><content type='html'>Procurar por &lt;span style="font-weight: bold;"&gt;^$\n&lt;/span&gt; e substituir por nada.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3632126428292394916?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3632126428292394916/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3632126428292394916' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3632126428292394916'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3632126428292394916'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/02/regex-para-remover-linhas-vazias-de-um.html' title='RegEx para remover linhas vazias de um ficheiro'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5413688844542843251</id><published>2011-01-28T15:22:00.002Z</published><updated>2011-01-28T15:24:35.307Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='xming'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><title type='text'>Ambiente gráfico remoto Linux em Windows</title><content type='html'>Um bom tutorial de como ver o ambiente gráfico Linux em Windows. Simples e sem complicações.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.cse.unsw.edu.au/%7Ehelpdesk/documentation/Putty.html"&gt;http://www.cse.unsw.edu.au/~helpdesk/documentation/Putty.html&lt;/a&gt; (em inglês)&lt;br /&gt;&lt;br /&gt;Irão precisar do software:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.straightrunning.com/XmingNotes/"&gt;http://www.straightrunning.com/XmingNotes/&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5413688844542843251?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5413688844542843251/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5413688844542843251' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5413688844542843251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5413688844542843251'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/01/ambiente-grafico-remoto-linux-em.html' title='Ambiente gráfico remoto Linux em Windows'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4625661700574883342</id><published>2011-01-21T15:37:00.003Z</published><updated>2011-01-21T15:43:51.005Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='importar'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Importar dados no Oracle SQL</title><content type='html'>Para importar dados para dentro de uma base de dados Oracle, pode-se usar o Import Data Pump.&lt;br /&gt;&lt;br /&gt;Para começar é necessário criar uma directoria dentro da base de dados:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;CREATE OR REPLACE DIRECTORY impdp_dir AS '/home/oracle';&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E dar permissões de acesso ao utilizador que irá realizar o import:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family: trebuchet ms;"&gt;GRANT READ, WRITE ON DIRECTORY impdp_dir TO utilizador;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Não convém nada importar os dados com um utilizador &lt;span style="font-weight: bold;"&gt;dba&lt;/span&gt;, pois caso não se saiba exactamente o que está dentro do dados tal importação poderá dar, eventualmente, mais permissões do que se deseja.&lt;br /&gt;&lt;br /&gt;Seguidamente importar da linha de comandos do sistema operativo os dados. No exemplo seguinte está-se a usar Linux:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;font-size:85%;" &gt;impdp utilizador/password   DIRECTORY=impdp_dir DUMPFILE=dados_importar.dmp  FULL=y LOGFILE=resultado.log&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E pronto. Dados importados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4625661700574883342?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4625661700574883342/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4625661700574883342' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4625661700574883342'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4625661700574883342'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/01/importar-dados-no-oracle-sql.html' title='Importar dados no Oracle SQL'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5839034182685541247</id><published>2011-01-14T19:45:00.006Z</published><updated>2011-08-14T17:00:10.781+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='samba'/><category scheme='http://www.blogger.com/atom/ns#' term='red hat'/><title type='text'>Instalação e Configuração do SAMBA</title><content type='html'>Para actualizar o SAMBA numa máquina Red Hat Linux efectuar os seguintes passos como &lt;span style="font-weight: bold;"&gt;root &lt;/span&gt;(&lt;span style="font-style: italic;"&gt;neste caso está-se a instalar a versão 3.5.6-43&lt;/span&gt;):&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Obter o software. Por exemplo &lt;i&gt;yum install samba &lt;/i&gt;ou em: &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/"&gt;http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Descarregar os pacotes: &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/libsmbclient0-3.5.6-43.el5.x86_64.rpm"&gt;libsmbclient0-3.5.6-43.el5.x86_64.rpm&lt;/a&gt;, &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/samba3-3.5.6-43.el5.x86_64.rpm"&gt;samba3-3.5.6-43.el5.x86_64.rpm&lt;/a&gt;, &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/samba3-client-3.5.6-43.el5.x86_64.rpm"&gt;samba3-client-3.5.6-43.el5.x86_64.rpm e &lt;/a&gt;&lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/libwbclient0-3.5.6-43.el5.x86_64.rpm"&gt;libwbclient0-3.5.6-43.el5.x86_64.rpm&lt;/a&gt;&lt;/li&gt;&lt;li&gt;executar o comando&lt;span style="font-style: italic;"&gt;&lt;br /&gt;&lt;br /&gt;rpm -U &lt;/span&gt;&lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/libsmbclient0-3.5.6-43.el5.x86_64.rpm"&gt;libsmbclient0-3.5.6-43.el5.x86_64.rpm&lt;/a&gt; &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/samba3-3.5.6-43.el5.x86_64.rpm"&gt;samba3-3.5.6-43.el5.x86_64.rpm&lt;/a&gt;  &lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/samba3-client-3.5.6-43.el5.x86_64.rpm"&gt;samba3-client-3.5.6-43.el5.x86_64.rpm, &lt;/a&gt;&lt;a href="http://ftp.sernet.de/pub/samba/3.5/rhel/5/x86_64/libwbclient0-3.5.6-43.el5.x86_64.rpm"&gt;libwbclient0-3.5.6-43.el5.x86_64.rpm&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Iniciar o serviço :  &lt;span style="font-style: italic;"&gt;service smb start&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Adicionar um ou mais utilizadores que poderão aceder ao serviço (caso se use tdbsam) no sistema operativo caso ainda não existam&lt;span style="font-style: italic;"&gt;:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;useradd utilizador&lt;br /&gt;&lt;br /&gt;passwd palavrachave&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Adicionar o utilizador para que possa aceder ao SAMBA (caso se use tdbsam) e escrever a password de acesso:&lt;span style="font-style: italic;"&gt; pdbedit -a utilizador&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Edi&lt;span style="font-style: italic;"&gt;tar o ficheiro /etc/samba/smb.conf&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Exemplo de ficheiro com um share denominado partilha:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 85%;"&gt;&lt;span style="font-family: courier new;"&gt;[global]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        workgroup = MYGROUP&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        server string = Samba Server Version %v&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        load printers = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        security = user&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        passdb backend = tdbsam&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        cups options = raw&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        idmap uid = 16777999-55555431&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        idmap gid = 16777999-55554431&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        template shell = /bin/false&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;        winbind use default domain = no&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;[partilha]&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       comment = Logs APPS Partilhados&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       path = /var/logs/httpd&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       browseable = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       writable = yes&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: courier new;"&gt;       valid users = utilizador&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Reiniciar o serviço:  &lt;span style="font-style: italic;"&gt;service smb restart&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Experimentar aceder a partir do windows ao share&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;Ir ao Windows Explorer por exemplo e escrever \\123.123.123.123\partilha. Irá aparecer uma caixa para login.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Caso ocorra algum problema verificar se quer o smb.conf quer o utilizador estão bem criados com os comandos:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;testparm /etc/samba/smb.conf  &lt;/span&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;pdbedit -Lv utilizador&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5839034182685541247?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5839034182685541247/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5839034182685541247' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5839034182685541247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5839034182685541247'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/01/instalacao-e-configuracao-do-samba.html' title='Instalação e Configuração do SAMBA'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8077976101121642247</id><published>2011-01-14T14:51:00.003Z</published><updated>2011-01-18T14:53:09.016Z</updated><title type='text'>Tabelas de Sistema de Oracle SQL</title><content type='html'>&lt;table class="parm_values" width="651" border="1" cellpadding="4" cellspacing="0"&gt;&lt;tbody&gt;&lt;tr class="th_left_top"&gt;&lt;th width="204"&gt;Tabela de Sistema&lt;br /&gt;&lt;/th&gt;             &lt;th&gt;Descrição&lt;/th&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_ARGUMENTS&lt;/td&gt;             &lt;td&gt;Arguments in object accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_CATALOG&lt;/td&gt;             &lt;td&gt;All tables, views, synonyms, sequences accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_COL_COMMENTS&lt;/td&gt;             &lt;td&gt;Comments on columns of accessible tables and views&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_CONSTRAINTS&lt;/td&gt;             &lt;td&gt;Constraint definitions on accessible tables&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_CONS_COLUMNS&lt;/td&gt;             &lt;td&gt;Information about accessible columns in constraint definitions&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_DB_LINKS&lt;/td&gt;             &lt;td&gt;Database links accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_ERRORS&lt;/td&gt;             &lt;td&gt;Current errors on stored objects that user is allowed to create&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_INDEXES&lt;/td&gt;             &lt;td&gt;Descriptions of indexes on tables accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_IND_COLUMNS&lt;/td&gt;             &lt;td&gt;COLUMNs comprising INDEXes on accessible TABLES&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_LOBS&lt;/td&gt;             &lt;td&gt;Description of LOBs contained in tables accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_OBJECTS&lt;/td&gt;             &lt;td&gt;Objects accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_OBJECT_TABLES&lt;/td&gt;             &lt;td&gt;Description of all object tables accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_SEQUENCES&lt;/td&gt;             &lt;td&gt;Description of SEQUENCEs accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_SNAPSHOTS&lt;/td&gt;             &lt;td&gt;Snapshots the user can access&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_SOURCE&lt;/td&gt;             &lt;td&gt;Current source on stored objects that user is allowed to create&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_SYNONYMS&lt;/td&gt;             &lt;td&gt;All synonyms accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TABLES&lt;/td&gt;             &lt;td&gt;Description of relational tables accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TAB_COLUMNS&lt;/td&gt;             &lt;td&gt;Colunas de tabelas, views e clusters do utilizador&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TAB_COL_STATISTICS&lt;/td&gt;             &lt;td&gt;Columns of user's tables, views and clusters&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TAB_COMMENTS&lt;/td&gt;             &lt;td&gt;Comments on tables and views accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TRIGGERS&lt;/td&gt;             &lt;td&gt;Triggers accessible to the current user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TRIGGER_COLS&lt;/td&gt;             &lt;td&gt;Column usage in user's triggers or in triggers on user's tables&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_TYPES&lt;/td&gt;             &lt;td&gt;Description of types accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_UPDATABLE_COLUMNS&lt;/td&gt;             &lt;td&gt;Description of all updatable columns&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_USERS&lt;/td&gt;             &lt;td&gt;Information about all users of the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ALL_VIEWS&lt;/td&gt;             &lt;td&gt;Description of views accessible to the user&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DATABASE_COMPATIBLE_LEVEL&lt;/td&gt;             &lt;td&gt;Database compatible parameter set via init.ora&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_DB_LINKS&lt;/td&gt;             &lt;td&gt;All database links in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_ERRORS&lt;/td&gt;             &lt;td&gt;Current errors on all stored objects in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_OBJECTS&lt;/td&gt;             &lt;td&gt;All objects in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_ROLES&lt;/td&gt;             &lt;td&gt;All Roles which exist in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_ROLE_PRIVS&lt;/td&gt;             &lt;td&gt;Roles granted to users and roles&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_SOURCE&lt;/td&gt;             &lt;td&gt;Source of all stored objects in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_TABLESPACES&lt;/td&gt;             &lt;td&gt;Description of all tablespaces&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_TAB_PRIVS&lt;/td&gt;             &lt;td&gt;Todos os grants em objectos da base de dados&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_TRIGGERS&lt;/td&gt;             &lt;td&gt;All triggers in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_TS_QUOTAS&lt;/td&gt;             &lt;td&gt;Tablespace quotas for all users&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_USERS&lt;/td&gt;             &lt;td&gt;Information about all users of the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DBA_VIEWS&lt;/td&gt;             &lt;td&gt;Description of all views in the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DICTIONARY&lt;/td&gt;             &lt;td&gt;Description of data dictionary tables and views&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;DICT_COLUMNS&lt;/td&gt;             &lt;td&gt;Description of columns in data dictionary tables and views&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;GLOBAL_NAME&lt;/td&gt;             &lt;td&gt;global database name&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;NLS_DATABASE_PARAMETERS&lt;/td&gt;             &lt;td&gt;Permanent NLS parameters of the database&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;NLS_INSTANCE_PARAMETERS&lt;/td&gt;             &lt;td&gt;NLS parameters of the instance&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;NLS_SESSION_PARAMETERS&lt;/td&gt;             &lt;td&gt;NLS parameters of the user session&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;PRODUCT_COMPONENT_VERSION&lt;/td&gt;             &lt;td&gt;version and status information for component products&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;ROLE_TAB_PRIVS&lt;/td&gt;             &lt;td&gt;Table privileges granted to roles&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;SESSION_PRIVS&lt;/td&gt;             &lt;td&gt;Privileges which the user currently has set&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;SESSION_ROLES&lt;/td&gt;             &lt;td&gt;Roles which the user currently has enabled.&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;SYSTEM_PRIVILEGE_MAP&lt;/td&gt;             &lt;td&gt;Description table for privilege type codes. Maps privilege type numbers to type names&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;TABLE_PRIVILEGES&lt;/td&gt;             &lt;td&gt;Grants on objects for which the user is the grantor, grantee, owner, or an enabled role or PUBLIC is the grantee&lt;/td&gt;           &lt;/tr&gt;           &lt;tr class="tr_left_top"&gt;             &lt;td&gt;TABLE_PRIVILEGE_MAP&lt;/td&gt;             &lt;td&gt;Description table for privilege (auditing option) type codes. Maps privilege (auditing option) type numbers to type names&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8077976101121642247?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8077976101121642247/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8077976101121642247' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8077976101121642247'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8077976101121642247'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/01/tabelas-de-sistema-de-oracle-sql.html' title='Tabelas de Sistema de Oracle SQL'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2640421058347999979</id><published>2011-01-12T10:49:00.002Z</published><updated>2011-01-12T10:52:06.480Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ant'/><title type='text'>Ant - Failed to create task or type scp</title><content type='html'>Ao executar o ant ocorre o erro: "&lt;span style="font-weight: bold; font-style: italic;"&gt;Failed to create task or type scp&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;A solução para este problema é simples. Basta ir ao site: &lt;a href="http://www.jcraft.com/jsch/"&gt;http://www.jcraft.com/jsch&lt;/a&gt;, efectuar download do jar e colocar o mesmo dentro da pasta &lt;span style="font-weight: bold;"&gt;lib&lt;/span&gt; do ant que estão a executar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2640421058347999979?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2640421058347999979/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2640421058347999979' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2640421058347999979'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2640421058347999979'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2011/01/ant-failed-to-create-task-or-type-scp.html' title='Ant - Failed to create task or type scp'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2137385503432432090</id><published>2010-12-27T15:56:00.003Z</published><updated>2010-12-27T16:03:57.534Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='2003 server'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='registo'/><title type='text'>"Windows cannot load the user's profile but has logged you on with the default profile for the system"</title><content type='html'>&lt;h1  class="title" style="font-family:arial;"&gt;&lt;span style="font-size:130%;"&gt;Mensagem de erro quando se tenta entrar num Windows Server 2003: "Windows cannot load the user's  profile but has logged you on with the default profile for the system".&lt;/span&gt;&lt;/h1&gt;&lt;br /&gt;&lt;br /&gt;Basicamente o Windows não consegue fornecer mais recursos ao perfil com o qual se está a tentar entrar. Para resolver entrar com um utilizador com permissões de administrador e efectuar o seguinte:&lt;br /&gt;&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Abrir o &lt;span style="font-weight: bold;"&gt;regedit&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Ir à chave do registo: &lt;div class="indent"&gt;&lt;strong class="uiterm"&gt;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory  Management&lt;/strong&gt;&lt;/div&gt;&lt;/li&gt;&lt;li&gt;Criar uma nova entrada &lt;strong class="uiterm"&gt;DWORD Value&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Alterar o nome para &lt;span style="font-weight: bold;" class="userInput"&gt;PoolUsageMaximum&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Modificar o valor da &lt;strong class="uiterm"&gt;PoolUsageMaximum&lt;/strong&gt;, inserindo &lt;span style="font-weight: bold;"&gt;60&lt;/span&gt; de tipo &lt;strong class="uiterm"&gt;&lt;/strong&gt;&lt;span class="userInput"&gt;&lt;/span&gt;&lt;strong class="uiterm"&gt;Decimal&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;Se a entrada &lt;span style="font-weight: bold;"&gt;PagedPoolSize&lt;/span&gt; existir passar para o passo seguinte. Caso contrário criar com os seguintes valores::&lt;ol&gt;&lt;li type="a"&gt;Nova entrada &lt;strong class="uiterm"&gt;DWORD Value&lt;/strong&gt;.&lt;/li&gt;&lt;li type="a"&gt;Modificar o nome para &lt;span style="font-weight: bold;" class="userInput"&gt;PagedPoolSize&lt;/span&gt;.&lt;/li&gt;&lt;/ol&gt;&lt;/li&gt;&lt;li&gt;Alterar o valor de &lt;strong class="uiterm"&gt;PagedPoolSize&lt;/strong&gt; inserindo &lt;strong class="uiterm"&gt;&lt;/strong&gt; &lt;span class="userInput"&gt;ffffffff&lt;/span&gt; de tipo hexadecimal.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Sair do editor do registo e reiniciar o computador.&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2137385503432432090?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2137385503432432090/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2137385503432432090' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2137385503432432090'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2137385503432432090'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/windows-cannot-load-users-profile-but.html' title='&quot;Windows cannot load the user&apos;s profile but has logged you on with the default profile for the system&quot;'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5978114903183311971</id><published>2010-12-20T17:46:00.002Z</published><updated>2010-12-20T17:48:32.351Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='regex'/><title type='text'>REGEX - Remoção de linhas duplicadas</title><content type='html'>Partindo do pressuposto que o ficheiro está organizado por ordem alfabética basta correr a seguinte regex para encontrar as linhas duplicadas:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: trebuchet ms;" class="regex"&gt;^(.*)(\r?\n\1)+$&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para substituir as múltiplas linhas por uma só basta usar&lt;br /&gt;&lt;br /&gt;$1&lt;br /&gt;&lt;br /&gt;A sintaxe usada é a do JEDIT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5978114903183311971?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5978114903183311971/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5978114903183311971' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5978114903183311971'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5978114903183311971'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/regex-remocao-de-linhas-duplicadas.html' title='REGEX - Remoção de linhas duplicadas'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5320188630630546717</id><published>2010-12-16T12:03:00.003Z</published><updated>2010-12-16T12:13:38.553Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>ORA-01591: lock held by in-doubt distributed transaction TEXTO</title><content type='html'>A resolução deste problema é simples, desde que tenham o sistema que usa as tabelas em baixo.&lt;br /&gt;&lt;br /&gt;Este problema aconteceu-me ao tentar apagar uns registos de uma dada tabela. Para alguns registos o Oracle estava sempre a dar este erro: &lt;span style="font-style: italic;"&gt;ORA-01591: lock held by in-doubt distributed transaction TEXTO&lt;/span&gt;. Sabendo que o sistema que usava as tabelas estava em baixo, era impossível no momento da remoção dos registos haver algo a efectuar uma transacção.&lt;br /&gt;&lt;br /&gt;O TEXTO no erro ORA-01591, indica qual é a identificação do lock.&lt;br /&gt;&lt;br /&gt;Para resolver o problema basta executar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;rollback force 'TEXTO';&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color: rgb(204, 0, 0);"&gt;Tomar em atenção que se está a forçar a terminação de uma transacção. Apenas efectuar isto se tiverem a certeza de que ocorreram problemas algures no tempo, e que a transacção ficou pendurada&lt;/span&gt;. No caso acima descrito era impossível haver transacção a acontecer, pois o sistema estava em baixo.&lt;br /&gt;&lt;br /&gt;Dependendo da carga e do rollback necessário, poderá acontecer que o Oracle demore algum tempo até terminar o rollback.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5320188630630546717?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5320188630630546717/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5320188630630546717' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5320188630630546717'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5320188630630546717'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/ora-01591-lock-held-by-in-doubt.html' title='ORA-01591: lock held by in-doubt distributed transaction TEXTO'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4645045597840772028</id><published>2010-12-16T12:01:00.002Z</published><updated>2010-12-16T12:03:38.931Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Obtenção de todos os privilégios em Tabelas para um dado Utilizador em Oracle</title><content type='html'>Como &lt;span style="font-weight: bold;"&gt;system&lt;/span&gt;, por exemplo, correr a seguinte query:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;SELECT *&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;FROM DBA_TAB_PRIVS&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;WHERE grantee = 'UTILIZADOR_PRETENDIDO'&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4645045597840772028?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4645045597840772028/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4645045597840772028' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4645045597840772028'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4645045597840772028'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/obtencao-de-todos-os-privilegios-em.html' title='Obtenção de todos os privilégios em Tabelas para um dado Utilizador em Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5835443560768332052</id><published>2010-12-14T16:15:00.001Z</published><updated>2010-12-14T16:17:44.001Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='jad'/><title type='text'>Usar o Jad para descompilar recursivamente</title><content type='html'>&lt;pre class="active4d"&gt;jad -ff -space -lnc -s java -d directoria_destino &lt;span style="font-weight: bold;"&gt;-r directoria_contem_ficheiros&lt;/span&gt;&lt;span style="font-weight: bold;" class="UserDefinedConstant"&gt;\*&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;*&lt;/span&gt;&lt;span style="font-weight: bold;" class="UserDefinedConstant"&gt;\*&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;.class&lt;/span&gt;&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5835443560768332052?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5835443560768332052/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5835443560768332052' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5835443560768332052'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5835443560768332052'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/usar-o-jad-para-descompilar.html' title='Usar o Jad para descompilar recursivamente'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4054602811248651192</id><published>2010-12-11T12:14:00.004Z</published><updated>2010-12-11T12:16:45.940Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Altear a shell por defeito para um utilizador em Linux</title><content type='html'>Como root editar o ficheiro &lt;span style="font-weight: bold;"&gt;/etc/passwd&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Ir até à linha que contém o utilizador pretendido, e alterar no fim para a shell pretendida.&lt;br /&gt;No caso abaixo alterou-se para a &lt;span style="font-weight: bold;"&gt;bash&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;liferay:x:1000:1000::/home/liferay:/bin/bash&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4054602811248651192?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4054602811248651192/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4054602811248651192' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4054602811248651192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4054602811248651192'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/12/altear-shell-por-defeito-para-um.html' title='Altear a shell por defeito para um utilizador em Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2537446265513630976</id><published>2010-10-07T16:24:00.002+01:00</published><updated>2010-10-07T16:29:46.567+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='firefox'/><category scheme='http://www.blogger.com/atom/ns#' term='stylish'/><title type='text'>Esconder barras de ferramentas no Firefox</title><content type='html'>No Firefox por vezes existem add-ons que são necessários mas que insistem em ter uma barra de ferramentas de que se não precisa. Cada vez que se abre uma nova instância do FireFox a barra aparece novamente, mesmo que numa outra instância tenha sido escondida manualmente. A solução é usar:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://cybernetnews.com/autohide-firefox-toolbar/"&gt;http://cybernetnews.com/autohide-firefox-toolbar/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basicamente instala-se o &lt;span style="font-weight: bold;"&gt;stylish &lt;/span&gt;e o &lt;span style="font-weight: bold;"&gt;DOM Inspector&lt;/span&gt; no FireFox. A partir daí é usar algo um estilo para esconder a toolbar.&lt;br /&gt;&lt;br /&gt;Exemplo para a RobotForm toolbar:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;#roboform-toolbar{display:none;}&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2537446265513630976?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2537446265513630976/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2537446265513630976' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2537446265513630976'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2537446265513630976'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/10/esconder-barras-de-ferramentas-no.html' title='Esconder barras de ferramentas no Firefox'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-624478175853391316</id><published>2010-08-13T17:52:00.003+01:00</published><updated>2010-08-13T17:53:21.675+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='smtp'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='linha comandos'/><category scheme='http://www.blogger.com/atom/ns#' term='e-mail'/><title type='text'>Envio de e-mail simples pela linha de comando em Linux</title><content type='html'>É possível usando o programa sendEmail.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.linuxforums.org/forum/redhat-fedora-linux-help/75463-sending-mail-command-line-smtp.html"&gt;http://www.linuxforums.org/forum/redhat-fedora-linux-help/75463-sending-mail-command-line-smtp.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Permite indicar que servidor usar para enviar o e-mail&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-624478175853391316?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/624478175853391316/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=624478175853391316' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/624478175853391316'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/624478175853391316'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/08/envio-de-e-mail-simples-pela-linha-de.html' title='Envio de e-mail simples pela linha de comando em Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5622798859741295271</id><published>2010-08-12T11:41:00.002+01:00</published><updated>2010-08-12T11:51:47.375+01:00</updated><title type='text'>JavaScriptzada</title><content type='html'>Estava a integrar um portal noutro, quando me deparei com um problema estranho. A codificação de caracteres acentuados em URLs para pesquisa era diferente se a pesquisa fosse feita fora do portal integrador, ou feita dentro.&lt;br /&gt;&lt;br /&gt;Basicamente o problema resume-se ao JavaScript e ao uso das funções &lt;span style="font-weight: bold;"&gt;escape&lt;/span&gt; ou &lt;span style="font-weight: bold;"&gt;encodeURIComponent&lt;/span&gt;. A função escape vem dos primórdios do JavaScript, enquanto a função encodeURIComponent vem do JavaScript 1.5. Basicamente o URL dado pelas duas funções irá ser diferente.&lt;br /&gt;&lt;br /&gt;Por exemplo, a palavra &lt;span style="font-weight: bold;"&gt;região &lt;/span&gt;dá origem, de acordo com a função usada:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;regi%E3o&lt;/span&gt;, se usar escape&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;regi%C3%A3o&lt;/span&gt;, se usar encodeURIComponent &lt;/li&gt;&lt;/ul&gt;O portal integrador, usa a função encodeURIComponent enquanto o integrado usa escape, dando origem ao problema.&lt;br /&gt;&lt;br /&gt;Para uma comparação entre as duas funções e mais a encodeURI ver:&lt;br /&gt;&lt;a href="http://xkr.us/articles/javascript/encode-compare"&gt;http://xkr.us/articles/javascript/encode-compare&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5622798859741295271?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5622798859741295271/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5622798859741295271' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5622798859741295271'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5622798859741295271'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/08/javascriptzada.html' title='JavaScriptzada'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6647133193753677848</id><published>2010-07-05T19:48:00.003+01:00</published><updated>2010-07-05T19:52:59.545+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='dbadapter'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Raio do ra.xml</title><content type='html'>Quando se usa o DBAdapter para ligar o BPEL à BD e este DBAdapter está sob Weblogic (v 9), é preciso "quitar" o &lt;span style="font-weight: bold;"&gt;ra.xml &lt;/span&gt;que está localizado em .../DBAdapter/META-INF/ para se poder usar uma connection pool configurada no Weblogic:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            &lt;config-property&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-name&gt;xADataSourceName&lt;/config-property-name&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-type&gt;java.lang.String&lt;/config-property-type&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-value&gt;jdbc/XADataSource&lt;/config-property-value&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            &lt;/config-property&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            &lt;config-property&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-name&gt;dataSourceName&lt;/config-property-name&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-type&gt;java.lang.String&lt;/config-property-type&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;               &lt;config-property-value&gt;jdbc/DataSource&lt;/config-property-value&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-family: verdana;"&gt;            &lt;/config-property&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Caso contrário na consola do Weblogic não será possível configurar a connection pool que está definida no Weblogic.&lt;br /&gt;&lt;br /&gt;Após quitar o ra.xml, é necessário fazer update do DBAdapter.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6647133193753677848?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6647133193753677848/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6647133193753677848' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6647133193753677848'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6647133193753677848'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/07/raio-do-raxml.html' title='Raio do ra.xml'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4826152551681227730</id><published>2010-07-05T19:32:00.005+01:00</published><updated>2010-07-06T22:11:40.303+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='bpel'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Configurar Timouts no BPEL (v 10)  sobre Weblogic (9)</title><content type='html'>Baseado neste artigo,&lt;br /&gt;&lt;br /&gt;&lt;a href="http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/app_trblshoot.htm"&gt;http://download.oracle.com/docs/cd/B31017_01/integrate.1013/b28981/app_trblshoot.htm&lt;/a&gt;  &lt;p&gt;Na parte de configuração de timeouts e também pelo que tenho visto na web, uma boa configuração para o BPEL sobre WLS em termos de timeouts de transacções é a seguinte:&lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;360&lt;/span&gt; no timeout global do JTA (feito através da consola do WLS)&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;  &lt;p&gt;Adicionalmente é necessário alterar para &lt;span style="font-weight: bold;"&gt;300 &lt;/span&gt;segundos os timeouts  no jar:&lt;br /&gt;&lt;/p&gt;  &lt;ul&gt;&lt;li&gt;ejb_ob_engine.jar&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;p&gt;e no ficheiro &lt;span style="font-style: italic;"&gt;.../soasuite/integration/esb/config/esb_config.ini&lt;/span&gt; colocar &lt;span style="font-weight: bold;"&gt;360 &lt;/span&gt;no timeout.&lt;br /&gt;&lt;/p&gt;  Na consola BPEL, &lt;span style="font-weight: bold;"&gt;por domínio&lt;/span&gt; colocar o &lt;span style="font-weight: bold;"&gt;syncMaxWaitTime &lt;/span&gt;a &lt;span style="font-weight: bold;"&gt;240&lt;/span&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4826152551681227730?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4826152551681227730/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4826152551681227730' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4826152551681227730'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4826152551681227730'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/07/configurar-timouts-no-bpel-v-10-sobre.html' title='Configurar Timouts no BPEL (v 10)  sobre Weblogic (9)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1612887278762499482</id><published>2010-06-13T20:29:00.005+01:00</published><updated>2010-06-13T20:40:53.313+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='xp'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='instalar'/><title type='text'>Instalar o Windows XP em hardware antigo</title><content type='html'>Caso tenham uma cópia do Windows XP (backup) e queiram instalar o mesmo em hardware legado (antigo), poderá ocorrer um problema do tipo: "&lt;span style="font-weight: bold;"&gt;Boot CD-ROM Type: Non-Emulation Booting&lt;/span&gt;". Neste caso a solução é criar um novo CD com uma imagem de boot.&lt;br /&gt;&lt;br /&gt;A solução encontra-se em&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.tacktech.com/display.cfm?ttid=297"&gt;http://www.tacktech.com/display.cfm?ttid=297&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Caso usem o ImgBurn é só cruzar a informação acima com a debaixo&lt;br /&gt;&lt;br /&gt;&lt;a href="http://forum.imgburn.com/index.php?s=70af377f844a1bc6e63f84b2bcccbf46&amp;amp;showtopic=11190"&gt;http://forum.imgburn.com/index.php?s=70af377f844a1bc6e63f84b2bcccbf46&amp;amp;showtopic=11190&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;e não é que funciona mesmo.....&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1612887278762499482?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1612887278762499482/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1612887278762499482' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1612887278762499482'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1612887278762499482'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/06/instalar-o-windows-xp-em-hardware.html' title='Instalar o Windows XP em hardware antigo'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4638013093130527655</id><published>2010-04-04T16:29:00.002+01:00</published><updated>2010-04-04T16:31:45.892+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><title type='text'>Putty em multiplos separadores</title><content type='html'>O &lt;a href="http://www.straightrunning.com/XmingNotes/portableputty.php"&gt;Xming&lt;/a&gt; é um programa jeitoso que permite ter numa só interface múltiplos separadores de Putty.&lt;br /&gt;&lt;br /&gt;É usar e abusar. :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4638013093130527655?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4638013093130527655/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4638013093130527655' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4638013093130527655'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4638013093130527655'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/04/putty-em-multiplos-separadores.html' title='Putty em multiplos separadores'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8826954468981070683</id><published>2010-02-04T21:05:00.003Z</published><updated>2010-07-29T12:57:32.797+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='importar'/><category scheme='http://www.blogger.com/atom/ns#' term='ucm'/><category scheme='http://www.blogger.com/atom/ns#' term='conteudos'/><category scheme='http://www.blogger.com/atom/ns#' term='exportar'/><title type='text'>Exportar e Importar conteúdos do UCM da Oracle</title><content type='html'>&lt;a href="http://andrealmar.wordpress.com/2009/08/11/ucm-tutorial-de-migracao/"&gt;Aqui&lt;/a&gt; está um bom guia de como fazer isto.&lt;br /&gt;&lt;br /&gt;O único senão é estar para o SO Windows.&lt;br /&gt;&lt;br /&gt;As diferenças são:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;ComponentWizard&lt;/span&gt; - Está em ucm/server/bin&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;Os "miniaplicativos" &lt;/span&gt;- Via browser estão em &lt;span style="font-style: italic;"&gt;Administration -&gt; Admin Applets&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;A configuração do Folders_g é feita através do component manager do admin server&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8826954468981070683?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8826954468981070683/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8826954468981070683' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8826954468981070683'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8826954468981070683'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2010/02/exportar-e-importar-conteudos-do-ucm-da.html' title='Exportar e Importar conteúdos do UCM da Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6194901365213570786</id><published>2009-11-08T01:23:00.002Z</published><updated>2009-11-08T02:14:30.740Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ssh'/><category scheme='http://www.blogger.com/atom/ns#' term='putty'/><title type='text'>Login automático em ssh com o Putty</title><content type='html'>Não há razão para se estar sempre a escrever usernames e passwords quando se liga a servidores remotos via ssh com o PuTTY.&lt;br /&gt;&lt;br /&gt;Eis aqui como fazer:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Ter o PuTTY&lt;/li&gt;&lt;li&gt;Ter o PuTTYgen&lt;/li&gt;&lt;li&gt;Ter o PAgent&lt;/li&gt;&lt;/ol&gt;Todos estes programas estão acessíveis em: &lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty"&gt;http://www.chiark.greenend.org.uk/~sgtatham/putty&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Antes de mais é necessário gerar uma chave pública e uma chave privada:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Lançar o PuTTYgen&lt;/li&gt;&lt;li&gt;Carregar em Generate&lt;/li&gt;&lt;li&gt;Mover o rato na zona cinzenta para introduzir algum ruído para facilitar a aleatoriedade da chave.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Depois de gerada a chave, escrever um comentário que irá identificar a mesma&lt;/li&gt;&lt;li&gt;Introduzir a Palavra-Chave e a respectiva confirmação. É esta chave que permite abrir a chave privada gerada&lt;/li&gt;&lt;li&gt;Guardar as chaves pública e privada no disco&lt;/li&gt;&lt;/ol&gt;O conteúdo da chave pública deverá ser copiada para cada um dos servidores remotos aos quais pretendemos ligar. A localização no servidor remoto onde colocar a chave pública é em &lt;span style="font-style: italic;"&gt;/home/&lt;username&gt;/.ssh/authorized_keys2&lt;/span&gt;. No caso do utilizador &lt;span style="font-weight: bold;"&gt;root&lt;/span&gt;, colocar em &lt;span style="font-style: italic;"&gt;/root/.ssh/authorized_keys2&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Editar o ficheiro &lt;span style="font-style: italic;"&gt;authorized_keys2&lt;/span&gt;, e adicionar no fim, numa nova linha, o seguinte:&lt;br /&gt;ssh-rsa &lt;conteúdo&gt; &lt;comentário&gt;&lt;br /&gt;O &lt;comentário&gt; poderá ser o mesmo que o colocado no ponto 4. Auxilia visualmente a identificar a chave. Salvar o ficheiro.&lt;br /&gt;&lt;br /&gt;A directoria &lt;span style="font-style: italic;"&gt;.ssh&lt;/span&gt; deverá apenas ter permissões para o próprio utilizador (rwx).&lt;br /&gt;&lt;br /&gt;Para ligar automaticamente via ssh, é necessário colocar o programa PAgent a correr e adicionar a chave privada. Depois disto o programa pede a Palavra-Chave da chave privada. Introduzir a Palavra-Chave indicada no ponto 5. A partir deste momento é só abrir uma nova consola PuTTY, iniciar uma ligação com um servidor remoto que tenha a chave pública criada, e temos o login automático. Sem mais configurações é ainda necessário introduzir o username, mas a password é automaticamente colocada pelo PuTTY.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Tomar em atenção que o PAgent tem de estar a correr para se usufruir desta funcionalidade.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para completar o automatismo:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Nas ligações do PuTTY, na parte do Host Name, introduzir: &lt;username&gt;@IP, para o processo ser completamente automático&lt;/li&gt;&lt;li&gt;Para carregar automaticamente as chaves no PAgent, passar na linha de comandos o caminho completo para o ficheiro da chave privada (ex: c:\pchave.ppk)&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;A Palavra-Chave indicada no ponto 5 tem de ser sempre colocada quando o PAgent corre pela primeira vez numa sessão Windows.&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Por ser um mecanismo automático tomar em extrema atenção e não deixar o computador sem vigilância (isto é, bloquear a sessão sempre).&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6194901365213570786?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6194901365213570786/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6194901365213570786' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6194901365213570786'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6194901365213570786'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/11/login-automatico-em-ssh-com-o-putty.html' title='Login automático em ssh com o Putty'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1860411766079400733</id><published>2009-10-29T18:36:00.002Z</published><updated>2009-10-29T18:38:51.486Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='unicode'/><title type='text'>Procurar Representação Unicode</title><content type='html'>O site seguinte fornece a tradução (para vários formatos e encodings) de caracteres.&lt;br /&gt;&lt;br /&gt;http://www.fileformat.info/info/unicode/char/search.htm&lt;br /&gt;&lt;br /&gt;Exemplo para o &lt;span style="font-weight: bold;"&gt;ç&lt;/span&gt;:&lt;br /&gt;&lt;br /&gt;UTF-8 (binary)   11000011:10100111&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1860411766079400733?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1860411766079400733/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1860411766079400733' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1860411766079400733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1860411766079400733'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/10/procurar-representacao-unicode.html' title='Procurar Representação Unicode'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3164061205841250783</id><published>2009-10-23T14:50:00.002+01:00</published><updated>2009-10-23T14:52:56.182+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='maven'/><title type='text'>Instalar um jar no repositório maven local</title><content type='html'>Instalar um jar isolado no repositório maven local&lt;br /&gt;&lt;br /&gt;&lt;code&gt; mvn install:install-file -Dfile=CAMINHO_PARA_FICHEIRO\JAR_ISOLADO.jar -DgroupId=IDENTIFICADOR_GRUPO -DartifactId=IDENTIFICADOR_ARTEFACTO -Dversion=VERSAO_ARTEFACTO -Dpackaging=jar -DgeneratePom=true&lt;/code&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3164061205841250783?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3164061205841250783/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3164061205841250783' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3164061205841250783'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3164061205841250783'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/10/instalar-um-jar-no-repositorio-maven.html' title='Instalar um jar no repositório maven local'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8344537007750944034</id><published>2009-10-10T15:24:00.007+01:00</published><updated>2009-10-11T00:51:10.970+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ferramentas'/><category scheme='http://www.blogger.com/atom/ns#' term='produtividade'/><title type='text'>Ferramentas para o dia-a-dia</title><content type='html'>Coloco aqui um conjunto de ferramentas que costumo usar. Algumas são usadas todos os dias intensivamente. Outras têm um uso mais ocasional. Mas todas elas colaboram para a minha produtividade e/ou são úteis de alguma maneira. Estas ferramentas são todas para o sistema operativo Windows (talvez a ferramenta menos produtiva que use...) e todas elas são gratuitas.&lt;br /&gt;&lt;br /&gt;Espero que seja útil.&lt;br /&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.comodo.com/home/internet-security/free-internet-security.php"&gt;Comodo Internet Security – Free Version&lt;/a&gt; -&gt; Trabalhando num sistema Windows é essencial ter um anti-vírus e algo que controle o uso do sistema. Estando ligado à internet, é essencial ter uma Firewall.  Existem muitos produtos à escolha. Contudo, o Comodo Internet Security é um conjunto de 3 ferramentas (Anti-Virús, Defense e Firewall) tudo integrado e configurável a partir de um só local. Até hoje não tive nenhum problema no sistema derivado a virús, intrusões ou software malicioso.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.codeproject.com/KB/cs/commandbar.aspx"&gt;Command Prompt Explorer Bar&lt;/a&gt; -&gt; Integra a Linha de Comandos no Explorer. Dá muito jeito quando tem de se trabalhar simultaneamente nos dois ao mesmo tempo. Acessível através de CTRL + M em qualquer explorer.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.7-zip.org/"&gt;7-Zip&lt;/a&gt; -&gt; Simplesmente o melhor gestor de ficheiros comprimidos. Lê, se não todos, praticamente todos os formatos.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.daemon-tools.cc/eng/home"&gt;Daemon Tools&lt;/a&gt; -&gt; Emulador de discos ópticos (montagem de ficheiros iso por exemplo). Permite que se montem imagens de CDs ou DVDs sem se ter de gravar a mesma num disco físico.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.winamp.com/"&gt;Winamp&lt;/a&gt; -&gt; Tocador multimédia de vários formatos.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.snapfiles.com/get/restoration.html"&gt;Restauration&lt;/a&gt; -&gt; Recupera ficheiros apagados&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.malwarebytes.org/"&gt;MalwareBytes&lt;/a&gt; -&gt; Porque hoje em dia os anti-vírus não detectam com eficácia o Malware (Cavalos de Troia), é necessário mais software para os detectar. Tendo o COMODO, até hoje o MalwareBytes não detectou nenhum problema. Pode ter sido sorte não ter ocorrido nenhum problema, ou o COMODO é mesmo eficiente.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.virtualbox.org/"&gt;VirtualBox&lt;/a&gt; -&gt; Possibilita o uso de máquinas virtuais, ou seja, ter um sistema operativo a correr dentro de outro. Uma das vantagens da virtualização é ter um sistema base virtualizado e a partir dele efectuar, por exemplo, experiências na configuração e verificar se funcionam, ou instalar produtos de demonstração, isto sem alterar o sistema efectivamente instalado directamente sobre o hardware.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://filezilla-project.org/"&gt;FileZilla&lt;/a&gt; -&gt; Cliente FTP&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eudora.com/"&gt;Eudora&lt;/a&gt; -&gt; Cliente de E-Mail.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.rodi.dk/software_pl3.php"&gt;ProgramLaunch&lt;/a&gt; -&gt; É parecido com a barra de Start do Windows. Permite, de uma forma rápida aceder a programas e lança-los. Tem, contudo, muitas vantagens sobre ela. Permite a criação de grupos, disponível onde se der a indicação, configuração de icons e tamanhos.&lt;/li&gt;&lt;li&gt;&lt;a href="http://winmerge.org/"&gt;Winmerge&lt;/a&gt; -&gt; Comparação de ficheiros e directorias&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.taskcoach.org/"&gt;TaskCoach&lt;/a&gt; -&gt; Permite o controlo do tempo gasto durante o dia de trabalho e também o planeamento de trabalho. Ferramenta muito simples de usar e que permite, para quem tenha de preencher controlo de horas semanais ou mensais, saber o que andou a fazer durante o dia,.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.e-sword.net/"&gt;e-sword&lt;/a&gt; -&gt; Ferramenta bastante boa para quem goste da leitura e estudo da bíblia, ou meros curiosos que queiram ter a bíblia disponível electronicamente no seu computador&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.openoffice.org/"&gt;OpenOffice&lt;/a&gt; -&gt; Por muito que queiram ainda não substitui completamente o Office da Microsoft. Ainda tem muitos problema principalmente ao nível de tabelas e bullets. Contudo para edição não muito formatada iguala o produto da Micro$oft.&lt;/li&gt;&lt;li&gt;&lt;a href="http://keepass.info/"&gt;KeyPass&lt;/a&gt; -&gt; Ferramenta para gestão de passwords, e como mantê-las a salvo (em vez de termos num ficheiro de texto ou em papel...)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.cygwin.com/"&gt;Cygwin&lt;/a&gt; -&gt; Linha de comandos do Unix no Windows e muito mais&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mythicsoft.com/agentransack/"&gt;AgentRansak&lt;/a&gt; -&gt; Muito melhor que a procura do Windows, e caso não se queira ter indexadores, embora a pesquisa seja mais lenta, este é o programa ideal.&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.cnet.com/Desktop-iCalendar-Lite/3000-2124_4-10802583.html"&gt;Desktop i-Calendar Lite&lt;/a&gt; -&gt; Calendário com A-Fazer e Eventos. Tem alguns problemas mas é simples e eficiente. Ainda não encontrei um substituto melhor&lt;/li&gt;&lt;li&gt;&lt;a href="http://desktop.google.com/"&gt;Google Desktop&lt;/a&gt; -&gt; Resisti muito tempo a este produto. Contudo, depois de instalado torna as pesquisas no Google mais eficientes, pois também procura no computador local. Permite também fazer pesquisas directas no computador pressionando 2x CTRL&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.ccleaner.com/"&gt;ccleaner&lt;/a&gt; -&gt; Porque no Windows o sistema está cheio de lixo, é necessário limpadores&lt;/li&gt;&lt;li&gt;&lt;a href="http://notepad-plus.sourceforge.net/br/site.htm"&gt;Notepad++&lt;/a&gt; -&gt; Porque um editor de texto decente nos torna significativamente mais produtivos&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.syntevo.com/smartcvs/index.html"&gt;SmartCVS&lt;/a&gt; -&gt; Cliente CVS&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.syntevo.com/smartsvn/index.html"&gt;SmartSVN&lt;/a&gt; -&gt; Cliente SVN&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.minq.se/products/dbvis/"&gt;DbVisualizer&lt;/a&gt; -&gt; Embora o TOAD seja a anos luz melhor que este programa, este tem a vantagem de ser gratuito (além de ser feito em Java). Para a gestão simples de base de dados serve perfeitamente.&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.lastfm.pt/download"&gt;lasfm scrobbler&lt;/a&gt; -&gt; Bem, interessante para quem tem uma conta no LastFm e quer manter o rasto do que andou a ouvir&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.chiark.greenend.org.uk/%7Esgtatham/putty/download.html"&gt;putty&lt;/a&gt; -&gt; A ferramenta para ligar a máquinas remotas UNIX, e trabalhar remotamente nas mesmas&lt;br /&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="https://tda.dev.java.net/"&gt;tda&lt;/a&gt; -&gt; Ferramenta que permite analisar Thread Dumps.&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.jedit.org/"&gt;jEdit&lt;/a&gt; -&gt; Mais um editor de texto com muitos plugins&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.vim.org/"&gt;Vim&lt;/a&gt; -&gt; Mais concretamente o gVim, permite ter o Vim no Windows com componente gráfica.&lt;/li&gt;&lt;li&gt;&lt;a href="http://jakarta.apache.org/jmeter/"&gt;jMeter&lt;/a&gt; -&gt; realizar testes de carga em interfaces Web.&lt;/li&gt;&lt;li&gt;&lt;a href="http://technet.microsoft.com/en-us/sysinternals/bb842062.aspx"&gt;Sysinternals Suite&lt;/a&gt; -&gt; Conjunto de ferramentas (principalmente administrativas) para o Windows&lt;/li&gt;&lt;li&gt;&lt;a href="http://directory.apache.org/studio/"&gt;Apache Directory Studio&lt;/a&gt; -&gt; Cliente de LDAP&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.getpaint.net/"&gt;paint .net&lt;/a&gt; -&gt; Editor de imagens&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.gomlab.com/eng/GMP_download.html"&gt;GOM player&lt;/a&gt; -&gt; Para visualizar vídeo&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.fiddler2.com/fiddler2/"&gt;Fiddler2&lt;/a&gt; -&gt; Captura no browser de todo o tráfego a partir de uma página, para efeitos de debug&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.badboy.com.au/"&gt;Bad Boy&lt;/a&gt; -&gt; Permite realizar testes de carga em interfaces Web. A vantagem sobre o JMeter é apenas na captura HTTPS&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.mozilla-europe.org/pt/firefox/"&gt;Firefox&lt;/a&gt; -&gt; O Browser&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.wireshark.org/"&gt;Wireshark&lt;/a&gt; -&gt; Captura de pacotes na rede para despiste de problemas em ligações e na própria rede&lt;/li&gt;&lt;li&gt;&lt;a href="http://pages.cs.wisc.edu/%7Eghost/gsview/"&gt;gsView&lt;/a&gt; -&gt; Visualização de Postscript, além de ter mais funcionalidades para transformação entre formatos.&lt;/li&gt;&lt;li&gt;&lt;a href="http://download.cnet.com/Foxit-Reader/3000-10743_4-10313206.html?part=dl-116442&amp;amp;subj=dl&amp;amp;tag=button/"&gt;Foxit Reader&lt;/a&gt; -&gt; Leitor de PDFs. Muito mais leve e rápido que o da Acrobat&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.eclipse.org/"&gt;Eclipse&lt;/a&gt; -&gt; IDE&lt;/li&gt;&lt;li&gt;&lt;a href="http://cdexos.sourceforge.net/"&gt;CDex&lt;/a&gt; -&gt; Conversor de música de CD para MP3s (por exemplo)&lt;/li&gt;&lt;li&gt;&lt;a href="http://www.imgburn.com/"&gt;ImgBurn&lt;/a&gt; -&gt; Ler/Gravar imagens para CD/DVD&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Plugins Firefox&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Web Developer -&gt; Permite activar e desactivar diversas configurações que afectam uma página web entre outras coisas. Indispensável para programadores Web&lt;/li&gt;&lt;li&gt;Morning Coffee -&gt; Carrega automaticamente, e conforme o dia da semana páginas quando se abre o Firefox.&lt;/li&gt;&lt;li&gt;FoxyProxy -&gt; Indispensável para quem está constantemente a trocar a rede onde trabalha&lt;/li&gt;&lt;li&gt;Download Statusbar -&gt; Substitui a gestão de downloads do firefox, sendo mais fácil geri-los&lt;/li&gt;&lt;li&gt;Corrector para Português Europeu -&gt; Dicionário PT para não metermos muitas argoladas quando escrevemos...&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8344537007750944034?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8344537007750944034/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8344537007750944034' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8344537007750944034'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8344537007750944034'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/10/ferramentas-para-o-dia-dia.html' title='Ferramentas para o dia-a-dia'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2784204207826183882</id><published>2009-08-28T13:15:00.002+01:00</published><updated>2009-08-28T13:25:18.282+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdeveloper'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><category scheme='http://www.blogger.com/atom/ns#' term='jdev'/><title type='text'>Ligar o JDeveloper com o Weblogic Server 9.2</title><content type='html'>Ao se configurar o JDev com o Weblogic Server 9.2 (não sei se noutras versões ocorre o mesmo), pode suceder o erro&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Cannot instantiate class: weblogic.jndi.WLInitialContextFactory&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Neste&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;caso existe um truque muito simples que é copiar o &lt;span style="font-weight: bold;"&gt;weblogic.jar&lt;/span&gt; (situado em &lt;bea_home&gt;/weblogic92/server/lib)para a directoria&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;jdev_home&gt;/jdev/lib/ext&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;reiniciar o JDev, e eis que todos os problemas se resolvem...&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;até que o próximo ocorra. :-)&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2784204207826183882?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2784204207826183882/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2784204207826183882' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2784204207826183882'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2784204207826183882'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/08/ligar-o-jdeveloper-com-o-weblogic.html' title='Ligar o JDeveloper com o Weblogic Server 9.2'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5565317542332913835</id><published>2009-08-18T16:14:00.003+01:00</published><updated>2009-08-18T16:20:47.624+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='redes'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='red hat'/><title type='text'>Adicionar rotas permanentes ao Red Hat Linux</title><content type='html'>Em &lt;span style="font-style: italic;"&gt;/etc/sysconfig/network-scripts&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;editar ou criar o ficheiro &lt;span style="font-weight: bold;"&gt;route-&lt;int&gt;X&lt;/span&gt; onde&lt;span style="font-weight: bold;"&gt; &lt;int&gt;&lt;span style="font-style: italic;"&gt; &lt;/span&gt;&lt;/span&gt;é a interface onde se vai adicionar a rota e &lt;span style="font-weight: bold;"&gt;X&lt;/span&gt; é o número da interface.&lt;br /&gt;&lt;br /&gt;Para se saber as rotas correntes: &lt;span style="font-weight: bold;"&gt;route&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;No ficheiro &lt;span style="font-weight: bold;"&gt;route-&lt;int&gt;X&lt;/span&gt;, adicionar:&lt;br /&gt;&lt;br /&gt;GATEWAY&lt;span style="font-weight: bold;"&gt;Z&lt;/span&gt;=xxx.xxx.xxx.xxx&lt;br /&gt;NETMASK&lt;span style="font-weight: bold;"&gt;Z&lt;/span&gt;=yyy.yyy.yyy&lt;br /&gt;ADDRESS&lt;span style="font-weight: bold;"&gt;Z&lt;/span&gt;=sss.sss.sss.sss&lt;br /&gt;&lt;br /&gt;Onde &lt;span style="font-weight: bold;"&gt;Z&lt;/span&gt; é o número da entrada no ficheiro (começar com 0 por exemplo).&lt;br /&gt;&lt;br /&gt;Na netmask pode-se usar 255.255.255.255 se o endereço for mesmo um ip de uma máquina.&lt;br /&gt;&lt;br /&gt;Salvar o ficheiro, e no fim escrever:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;service network restart&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Verificar o resultado com:&lt;br /&gt;&lt;br /&gt;ip route show&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5565317542332913835?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5565317542332913835/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5565317542332913835' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5565317542332913835'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5565317542332913835'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/08/adicionar-rotas-permanentes-ao-red-hat.html' title='Adicionar rotas permanentes ao Red Hat Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1149944247581881346</id><published>2009-08-03T15:34:00.003+01:00</published><updated>2009-08-03T15:35:10.467+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dropoly'/><title type='text'>Dropoly disponível</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://3.bp.blogspot.com/_WReXG6MMD0Q/Snb1iX8tw0I/AAAAAAAAAJU/wIPSSXC18vI/s1600-h/image.jpg"&gt;&lt;img style="cursor: pointer; width: 400px; height: 300px;" src="http://3.bp.blogspot.com/_WReXG6MMD0Q/Snb1iX8tw0I/AAAAAAAAAJU/wIPSSXC18vI/s400/image.jpg" alt="" id="BLOGGER_PHOTO_ID_5365745976951554882" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1149944247581881346?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1149944247581881346/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1149944247581881346' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1149944247581881346'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1149944247581881346'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/08/dropoly-disponivel.html' title='Dropoly disponível'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_WReXG6MMD0Q/Snb1iX8tw0I/AAAAAAAAAJU/wIPSSXC18vI/s72-c/image.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6100495506701608606</id><published>2009-07-31T17:51:00.003+01:00</published><updated>2009-07-31T17:54:04.070+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Removendo todos objectos de um utilizador na BD Oracle</title><content type='html'>&lt;pre&gt;&lt;span style="font-family: Georgia,serif;"&gt;Eis uma maneira mais ou menos rápida de apagar todos os objectos de um utilizador numa base de dados Oracle.&lt;br /&gt;&lt;br /&gt;Provavelmente existe uma maneira melhor de fazer isto, mas esta também funciona.&lt;br /&gt;&lt;br /&gt;Primeiro corre-se o statement:&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;select 'drop '||object_type||' '|| object_name||  DECODE(OBJECT_TYPE,'TABLE',' CASCADE CONSTRAINTS;',';')&lt;br /&gt;from user_objects&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Depois é só correr o resultado e pronto.&lt;br /&gt;&lt;/pre&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6100495506701608606?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6100495506701608606/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6100495506701608606' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6100495506701608606'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6100495506701608606'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/removendo-todos-objectos-de-um.html' title='Removendo todos objectos de um utilizador na BD Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-2689964367503185135</id><published>2009-07-23T19:46:00.003+01:00</published><updated>2009-07-23T20:01:34.864+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='ibatis'/><title type='text'>iBatis</title><content type='html'>Longe de ser um substituto directo do &lt;span style="font-weight: bold;"&gt;Hibernate&lt;/span&gt;, o &lt;a style="font-weight: bold;" href="http://ibatis.apache.org/"&gt;iBatis&lt;/a&gt; prima pela simplicidade.&lt;br /&gt;&lt;br /&gt;Enquanto o &lt;span style="font-weight: bold;"&gt;Hibernate &lt;/span&gt;é um novo paradigma, sendo necessário aprender, pelo menos, alguma da funcionalidade para não cometer erros , e onde o SQL é praticamente ausente, o &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt; é extremamente simples de usar, e não implica uma mudança de paradigma tão grande. O choque entre usar &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt; e &lt;span style="font-weight: bold;"&gt;Hibernate&lt;/span&gt; é consideravelmente menor no &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;O &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt; simplifica a vida principalmente na passagem de valores entre um ResultSet e uma classe java. Esqueçam os ciclos e a criação de objectos para passar de um objecto para outro. O &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt; trata disso automaticamente. De resto, escreve-se SQL normal, excepto nas partes onde é necessário passar valores para a query (usa-se #valor#) e de resto pouco mais. As queries podem ficar todas agrupadas num XML. O &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt;, do meu ponto de vista, é bastante bom em projectos pequenos onde não se precisa do '&lt;span style="font-style: italic;"&gt;canhão&lt;/span&gt;' &lt;span style="font-weight: bold;"&gt;Hibernate&lt;/span&gt;. Consegue-se muito boa performance, consegue-se controlar muito bem o SQL que é usado (pois escreve-se SQL) e, sobretudo, é tão simples de usar e configurar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-2689964367503185135?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/2689964367503185135/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=2689964367503185135' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2689964367503185135'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/2689964367503185135'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/ibatis.html' title='iBatis'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-4691189823458656733</id><published>2009-07-23T11:39:00.001+01:00</published><updated>2009-07-23T11:41:16.606+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comedia'/><title type='text'>Introdução de novas (velhas) tecnologias...</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=xFAWR6hzZek"&gt;http://www.youtube.com/watch?v=xFAWR6hzZek&lt;/a&gt; (em Inglês)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-4691189823458656733?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/4691189823458656733/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=4691189823458656733' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4691189823458656733'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/4691189823458656733'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/introducao-de-novas-velhas-tecnologias.html' title='Introdução de novas (velhas) tecnologias...'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6508091475421554476</id><published>2009-07-23T11:37:00.003+01:00</published><updated>2009-07-23T11:41:03.199+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comedia'/><category scheme='http://www.blogger.com/atom/ns#' term='soa'/><title type='text'>Greg o Arquitecto</title><content type='html'>&lt;a href="http://www.youtube.com/watch?v=uOQcjvUHZ0k"&gt;http://www.youtube.com/watch?v=uOQcjvUHZ0k&lt;/a&gt; (em Inglês)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6508091475421554476?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6508091475421554476/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6508091475421554476' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6508091475421554476'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6508091475421554476'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/greg-architect.html' title='Greg o Arquitecto'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-542464345115205992</id><published>2009-07-21T12:01:00.000+01:00</published><updated>2009-07-21T12:02:27.964+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='despiste problemas'/><category scheme='http://www.blogger.com/atom/ns#' term='jvm'/><title type='text'>Guia de despiste de problemas da JVM</title><content type='html'>Disponível em:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/docinfo.html"&gt;http://java.sun.com/javase/6/webnotes/trouble/TSG-VM/html/docinfo.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-542464345115205992?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/542464345115205992/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=542464345115205992' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/542464345115205992'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/542464345115205992'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/guia-de-despiste-de-problemas-da-jvm.html' title='Guia de despiste de problemas da JVM'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3011835835412435365</id><published>2009-07-17T13:57:00.003+01:00</published><updated>2009-07-17T14:04:34.912+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Recuperando ficheiros apagados no Eclipse</title><content type='html'>Eis aqui algo que dá sempre jeito saber: Como recuperar ficheiros apagados no eclipse.&lt;br /&gt;&lt;br /&gt;Como sabem, se apagarem um ficheiro no eclipse ele não irá parar à Reciclagem. Se se aperceberem de imediato do erro, podem fazer "&lt;span style="font-style: italic;"&gt;Undo Delete&lt;/span&gt;" (CTRL + Z), caso contrário existe uma solução.&lt;br /&gt;&lt;br /&gt;Sobre o projecto (ou em qualquer package da src) no qual querem recuperar o ficheiro, cliquem com o botão da direita e escolham "&lt;span style="font-style: italic;"&gt;Restore from Local History...."&lt;/span&gt;. Daqui aparece uma janela, na qual, do lado esquerdo estão os ficheiros apagados. É só seleccionar os ficheiros a recuperar e clicar no botão "&lt;span style="font-style: italic;"&gt;Restore&lt;/span&gt;".&lt;br /&gt;&lt;br /&gt;E pronto, ficheiro recuperado&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3011835835412435365?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3011835835412435365/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3011835835412435365' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3011835835412435365'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3011835835412435365'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/recuperando-ficheiros-apagados-no.html' title='Recuperando ficheiros apagados no Eclipse'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6011666917805612195</id><published>2009-07-16T19:06:00.004+01:00</published><updated>2009-07-16T19:16:52.024+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='ssl'/><category scheme='http://www.blogger.com/atom/ns#' term='ldap'/><title type='text'>Ignorando um certificado SSL no LDAP</title><content type='html'>Foi necessário efectuar uns testes numa ligação a um LDAP a partir de uma classe java. Esta ligação tinha de ser feita por SSL. Daquilo que percebi dos tutoriais da SUN (&lt;a href="http://java.sun.com/products/jndi/tutorial/ldap/index.html"&gt;http://java.sun.com/products/jndi/tutorial/ldap/index.html&lt;/a&gt;), o cliente java tinha de ter (importar) o certificado do servidor LDAP. Mas existia um problema. Não controlávamos o servidor LDAP, e até era possível obter o certificado SSL do servidor mas iria demorar pelo menos umas duas semanas até o termos. Não era tempo de esperar. Depois de alguma pesquisa, encontrei esta página com a solução. Usem e abusem :-D&lt;br /&gt;&lt;br /&gt;&lt;a href="http://blog.platinumsolutions.com/node/79"&gt;http://blog.platinumsolutions.com/node/79&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Basicamente, é criado um TrustManager que trata de aceitar todos os certificados sem os validar. A partir daí é possível testar a ligação sem ter o certificado do servidor instalado no cliente.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6011666917805612195?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6011666917805612195/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6011666917805612195' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6011666917805612195'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6011666917805612195'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/ignorando-um-certificado-ssl-no-ldap.html' title='Ignorando um certificado SSL no LDAP'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7196476935238099789</id><published>2009-07-16T16:28:00.002+01:00</published><updated>2009-07-16T16:36:04.995+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='produtividade'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Atalhando no Eclipse</title><content type='html'>Para todos os que usam o Eclipse, aqui está uma maneira engraçada de começarem a ser mais produtivos. Um plugin que permite, à medida que vão usando o eclipse, interiorizar os atalhos de teclado para chegarem às funcionalidades que estão a usar, e ás quais, chegaram com o rato.&lt;br /&gt;&lt;br /&gt;Ou seja, sempre que usarem o rato para invocar uma determinada funcionalidade (refactoring por exemplo), o plugin alerta-vos com uma tip qual o atalho a usar (no caso do refactoring ALT + SHIFT + M).&lt;br /&gt;&lt;br /&gt;É engraçado de usar, e, parecendo que não, se não tirarem as mãos do teclado, irão ser muito mais produtivos. A interiorização dos atalhos é feito naturalmente, em vez de se andar a decorar listas de comandos que depois se esquece rapidamente.&lt;br /&gt;&lt;br /&gt;Actualizem via install manager com o URL: &lt;a href="http://update.mousefeed.com"&gt;http://update.mousefeed.com&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Bons atalhos! :-D&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7196476935238099789?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7196476935238099789/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7196476935238099789' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7196476935238099789'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7196476935238099789'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/atalhando-no-eclipse.html' title='Atalhando no Eclipse'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-137667703509220514</id><published>2009-07-15T13:12:00.003+01:00</published><updated>2009-07-15T13:16:11.081+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><title type='text'>Instalar o JDK em Linux</title><content type='html'>Oh! Complicações das complicações. Fazer a actualização da versão do java em linux (no meu caso Red Hat).&lt;br /&gt;&lt;br /&gt;Sigam os passos descritos na página seguinte (em inglês):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://stoken-tips-and-tricks.blogspot.com/2007/10/howto-installupgrade-sun-java-under.html"&gt;http://stoken-tips-and-tricks.blogspot.com/2007/10/howto-installupgrade-sun-java-under.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Segui o que lá está escrito, e à excepção de um directório que mudou, está bem preciso. De resto foi um instante actualizar a versão. Mas podia ser bem mais simples...&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-137667703509220514?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/137667703509220514/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=137667703509220514' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/137667703509220514'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/137667703509220514'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/instalar-o-jdk-em-linux.html' title='Instalar o JDK em Linux'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-95755411103208542</id><published>2009-07-13T15:42:00.003+01:00</published><updated>2009-07-13T15:46:22.524+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='dropoly'/><category scheme='http://www.blogger.com/atom/ns#' term='inovaworks jogos'/><category scheme='http://www.blogger.com/atom/ns#' term='iphone'/><title type='text'>Dropoly</title><content type='html'>Aqui está algo que ficará na história da informática!&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=HL1J3RJxBlU"&gt;http://www.youtube.com/watch?v=HL1J3RJxBlU&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Para já em iPhone e iPod Touch.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-95755411103208542?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/95755411103208542/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=95755411103208542' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/95755411103208542'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/95755411103208542'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/dropoly.html' title='Dropoly'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3513588880048858881</id><published>2009-07-08T02:08:00.003+01:00</published><updated>2009-07-13T15:47:49.549+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='produtividade'/><category scheme='http://www.blogger.com/atom/ns#' term='livros'/><title type='text'>Leitura para Férias</title><content type='html'>Recomendo vivamente a leitura do livro&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;The Productive Programmer - Neal Ford - O'Reilly&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;da série /Theory/In/Practice&lt;span style="font-weight: bold;"&gt;.&lt;br /&gt;&lt;br /&gt;ISBN: &lt;span style="font-weight: bold;"&gt;978-0-596-51978-0&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;O livro fala de produtividade no trabalho. Está claramente vocacionado para a produtividade do trabalhador informático. Ao longo do livro lêem-se muitas das coisas que até sabemos mas não colocamos em prática. Fala também do muito software que está disponível para sermos mais produtivos.&lt;br /&gt;&lt;br /&gt;É um livro para ler e recordar as lições aprendidas.&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3513588880048858881?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3513588880048858881/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3513588880048858881' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3513588880048858881'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3513588880048858881'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/07/leitura-para-ferias.html' title='Leitura para Férias'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-540818279927767876</id><published>2009-05-15T16:20:00.001+01:00</published><updated>2009-05-15T16:21:32.231+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='java'/><category scheme='http://www.blogger.com/atom/ns#' term='passwords'/><title type='text'>Gerar Passwords</title><content type='html'>Caso algum dia precisem de gerar passwords, podem usar a seguinte classe do &lt;span style="font-weight: bold;"&gt;apache commons&lt;/span&gt;:&lt;br /&gt;&lt;a href="http://commons.apache.org/lang/apidocs/org/apache/commons/lang/RandomStringUtil"&gt;http://commons.apache.org/lang/apidocs/org/apache/commons/lang/RandomStringUtil&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-540818279927767876?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/540818279927767876/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=540818279927767876' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/540818279927767876'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/540818279927767876'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/05/gerar-passwords.html' title='Gerar Passwords'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3264028211135141321</id><published>2009-04-17T11:39:00.003+01:00</published><updated>2009-04-17T11:45:50.241+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='consola grafica'/><category scheme='http://www.blogger.com/atom/ns#' term='linux'/><category scheme='http://www.blogger.com/atom/ns#' term='windows'/><category scheme='http://www.blogger.com/atom/ns#' term='unix'/><category scheme='http://www.blogger.com/atom/ns#' term='cygwin'/><title type='text'>Unix - Consola Gráfica no Windows</title><content type='html'>Por vezes é necessário ter uma consola gráfica no Windows para uma dada consola de linha de comandos em Unix.&lt;br /&gt;&lt;br /&gt;Eis como a ter:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Instalar o &lt;span style="font-weight: bold;"&gt;cygwin&lt;/span&gt; (&lt;a href="http://www.cygwin.com/"&gt;http://www.cygwin.com/&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Na consola do &lt;span style="font-weight: bold;"&gt;cygwin &lt;/span&gt;escrever: &lt;span style="font-style: italic;"&gt;/usr/bin/startxwin.sh&lt;/span&gt;&lt;/li&gt;&lt;li&gt;Na janela que aparecer escrever:&lt;span style="font-style: italic;"&gt; xhost +&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-style: italic;"&gt;Na consola do sistema onde se está a trabalhar (consola de linha de comandos em Unix), escrever:&lt;/span&gt;&lt;span style="font-weight: bold;"&gt; &lt;/span&gt;&lt;span style="font-style: italic; font-family: arial;"&gt;export DISPLAY=&lt;ip&gt;:0&lt;br /&gt;&lt;/span&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3264028211135141321?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3264028211135141321/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3264028211135141321' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3264028211135141321'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3264028211135141321'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/04/unix-consola-grafica-no-windows.html' title='Unix - Consola Gráfica no Windows'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-8301445705870426120</id><published>2009-03-19T22:27:00.005Z</published><updated>2009-03-19T22:33:12.631Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ibatis'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>iBatis e Conjuntion OR</title><content type='html'>O uso da conjunction &lt;b&gt;OR&lt;/b&gt; obriga a que se coloque um espaço antes da condição. Caso contrário o &lt;b&gt;iBatis&lt;/b&gt; transforma tudo numa string sem espaços e dá um SQL inválido.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;&lt;br /&gt;&amp;lt;iterate conjunction="OR" property="params"&amp;gt;&amp;lt;&lt;b&gt;![CDATA[ ]]&lt;/b&gt;&amp;gt;param_1=#params[]# &amp;lt;/iterate&amp;gt;&lt;br /&gt;&lt;br /&gt;Sem o &amp;lt;&lt;b&gt;![CDATA[ ]]&lt;/b&gt;&amp;gt; &lt;b&gt;&lt;!--[CDATA[ ]]--&gt; &lt;/b&gt;o SQL estaria todo pegado (sem espaços) e daria SQL inválido na Base de Dados&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-8301445705870426120?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/8301445705870426120/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=8301445705870426120' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8301445705870426120'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/8301445705870426120'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/03/ibatis-e-conjuntion-or.html' title='iBatis e Conjuntion OR'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1938996652465010920</id><published>2009-03-19T21:03:00.005Z</published><updated>2009-03-19T21:09:52.976Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='ibatis'/><category scheme='http://www.blogger.com/atom/ns#' term='SQL'/><title type='text'>iBatis e uma Query com IN</title><content type='html'>Depois de andar às cabeçadas aqui vai a solução para como realizar uma query com &lt;span style="font-weight: bold;"&gt;IN&lt;/span&gt; no &lt;span style="font-weight: bold;"&gt;iBatis&lt;/span&gt;.&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;A classe &lt;span style="font-weight: bold;"&gt;ClasseParametros &lt;/span&gt;contém&lt;span style="font-weight: bold;"&gt;:&lt;br /&gt;&lt;/span&gt;&lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt; &lt;ul&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;params_2&lt;/span&gt; -&gt; java.util.ListList&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;&lt;/li&gt;&lt;li&gt;&lt;span style="font-weight: bold;"&gt;param_1&lt;/span&gt; -&gt; String&lt;/li&gt;&lt;/ul&gt;&lt;div class="panel" style="border-width: 1px;"&gt;&lt;div class="panelContent"&gt;&lt;br /&gt;&lt;p&gt;&amp;lt;update id="updateXpto"&lt;br /&gt;parameterClass="ClasseParametros"&amp;gt;&lt;br /&gt;UPDATE tabela_xpto&lt;br /&gt;SET param_1 = #param_1#&lt;br /&gt;WHERE param_2 IN(&lt;br /&gt;&amp;lt;iterate conjunction="," property="params_2"&gt;#params_2[]#&amp;lt;/iterate&amp;gt;&lt;br /&gt;)&lt;br /&gt;&amp;lt;/update&amp;gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;update id="updateXpto" parameterclass="ClasseParametros"&gt;&lt;/update&gt;&lt;/p&gt; &lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1938996652465010920?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1938996652465010920/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1938996652465010920' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1938996652465010920'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1938996652465010920'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/03/ibatis-e-uma-query-com-in.html' title='iBatis e uma Query com IN'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7143386287587675753</id><published>2009-01-12T13:37:00.002Z</published><updated>2009-01-12T13:39:52.888Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='livros'/><title type='text'>Alternativa à Amazon</title><content type='html'>Eis aqui uma alternativa à Amazon.&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.bookdepository.co.uk"&gt;http://www.bookdepository.co.uk&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Tem portes grátis para vários países do mundo, inclusive Portugal :-D&lt;br /&gt;Além disso os preços são geralmente mais baixos do que na Amazon.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7143386287587675753?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7143386287587675753/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7143386287587675753' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7143386287587675753'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7143386287587675753'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2009/01/alternativa-amazon.html' title='Alternativa à Amazon'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3697133356466818471</id><published>2008-11-27T19:32:00.008Z</published><updated>2009-03-20T15:19:13.648Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='axis2'/><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><title type='text'>Axis2 no Eclipse</title><content type='html'>Quando se corre o &lt;span style="font-weight: bold;"&gt;Axis2 Code Generator&lt;/span&gt; no eclipse e se obtém uma &lt;span style="font-weight: bold;"&gt;InvocationTargetException&lt;/span&gt;, pensa-se que é um problema nosso. Por incrível que pareça, até pode não ser. Depois de ter perdido &lt;span style="font-weight: bold;"&gt;horas&lt;/span&gt; neste erro, eis aqui a solução.&lt;br /&gt;&lt;br /&gt;São necessários vários "artifícios" para se conseguir colocar o&lt;span style="font-weight: bold;"&gt; Axis2 Code Generator&lt;/span&gt; (versão &lt;span style="font-weight: bold;"&gt;1.4.1&lt;/span&gt;) a funcionar no eclipse (versão &lt;span style="font-weight: bold;"&gt;europa&lt;/span&gt;).&lt;br /&gt;&lt;br /&gt;Antes de mais referir que na realidade a versão 1.4.1 que se descarrega do site do Axis2 é a versão 1.3.0. E isto é um problema.&lt;br /&gt;&lt;br /&gt;Para se conseguir gerar algo é necessário efectuar os seguintes passos no local onde está instalado o plugin no eclipse (...\eclipse\plugins\Axis2_Codegen_Wizard_1.3.0):&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copiar para a pasta &lt;span style="font-weight: bold;"&gt;lib &lt;/span&gt;os jars seguintes:&lt;/li&gt;&lt;/ul&gt;                  - &lt;span style="font-weight: bold;"&gt;backport-util-concurrent-3.1.jar&lt;/span&gt;&lt;br /&gt;          - &lt;span style="font-weight: bold;"&gt;geronimo-stax-api_1.0_spec-1.0.1.jar&lt;/span&gt;&lt;br /&gt;          - &lt;span style="font-weight: bold;"&gt;jsr173_1.0_api.jar&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Copiar o seguinte para o ficheiro &lt;span&gt;plugin.xml&lt;/span&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&lt;span&gt; &lt;span style="font-style: italic;"&gt;     &lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;&lt;/library&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;export name="*"&gt;&lt;/export&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar"&gt;&lt;/library&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;export name="*"&gt;&lt;/export&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;library name="lib/jsr173_1.0_api.jar"&gt;&lt;/library&gt;&lt;/span&gt;&lt;span style="font-style: italic;"&gt;&lt;export name="*"&gt;&lt;/export&gt;&lt;/span&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;      &lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;&lt;/library&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;        &lt;export name="*"&gt;&lt;/export&gt;&lt;/span&gt;      &lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;      &amp;lt;library name="lib/backport-util-concurrent-3.1.jar"&amp;gt;&lt;br /&gt;    &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;export name="*"/&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;     &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;/library&gt;&lt;br /&gt; &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;library name="lib/geronimo-stax-api_1.0_spec-1.0.1.jar"&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;        &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;export name="*"/&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;     &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;/library&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;     &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;library name="lib/jsr173_1.0_api.jar"&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;        &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;export name="*"/&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;     &lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;      &amp;lt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;/library&lt;/library&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&amp;gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;library name="lib/backport-util-concurrent-3.1.jar"&gt;&lt;export name="*"&gt;&lt;/export&gt;&lt;/library&gt;&lt;/span&gt;&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Mudar no ficheiro &lt;span style="font-weight: bold;"&gt;plugin.xml&lt;/span&gt; a versão de 1.3.0 para 1.4.0&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style="font-size:85%;"&gt;&amp;lt;plugin&lt;br /&gt;id="Axis2_Codegen_Wizard"&lt;br /&gt;name="Axis2 Codegen Wizard Plug-in"&lt;br /&gt;version=&lt;span style="font-weight: bold;"&gt;"1.4.0"&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;Alterar o nome da pasta do plugin para o número da nova versão (de Axis2_Codegen_Wizard_1.3.0 para Axis2_Codegen_Wizard_&lt;span style="font-weight: bold;"&gt;1.4.0&lt;/span&gt;)&lt;/li&gt;&lt;/ul&gt;E pronto adeus excepção e temos o eclipse a gerar que nem um doido. :-D&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Actualização&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Links para as libs&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://lafarga.cpl.upc.edu/plugins/scmsvn/viewcvs.php/*checkout*/tags/samt2007/lib/jsr173_1.0_api.jar?rev=236&amp;amp;root=annotation"&gt;jsr173_1.0&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://dev.project.net/trac/pnet-community/browser/trunk/core/lib/geronimo-stax-api_1.0_spec-1.0.1.jar?rev=17737&amp;amp;format=raw"&gt;geronimo-stax-api_1.0_spec-1.0.1&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href="http://mirrors.ibiblio.org/pub/mirrors/maven/mule/dependencies/maven2/backport-util-concurrent/backport-util-concurrent/3.1/backport-util-concurrent-3.1.jar"&gt;backport-util-concurrent-3.1&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3697133356466818471?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3697133356466818471/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3697133356466818471' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3697133356466818471'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3697133356466818471'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/11/axis2-no-eclipse.html' title='Axis2 no Eclipse'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3091828884549610035</id><published>2008-11-21T15:08:00.002Z</published><updated>2008-11-21T16:58:30.596Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='jar'/><category scheme='http://www.blogger.com/atom/ns#' term='jar finder'/><title type='text'>Em que jar estás tu ó classe?</title><content type='html'>Há alturas em que é preciso descobrir em que jar está uma certa classe.&lt;br /&gt;Para essas alturas temos o sítio web seguinte:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.findjar.com/"&gt;http://www.findjar.com/&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Dá jeito. Dá mesmo muito jeito.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3091828884549610035?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3091828884549610035/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3091828884549610035' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3091828884549610035'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3091828884549610035'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/11/em-que-jar-ests-tu-classe.html' title='Em que jar estás tu ó classe?'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5858616645712211168</id><published>2008-11-20T15:39:00.002Z</published><updated>2008-11-20T15:53:37.246Z</updated><title type='text'>Target runtime Apache Tomcat v5.5 is not defined - Parte II</title><content type='html'>Ás vezes quando se importa um projecto de eclipse, que tenha já uma configuração de Tomcat associada, o erro seguinte aparece:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;Target runtime Apache Tomcat v5.5 is not defined&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Para corrigir este erro é necessário um dos dois passos seguintes:&lt;br /&gt;&lt;ol&gt;&lt;li&gt;Se no eclipse ainda não se tiver nenhum servidor configurado, então configurar um (&lt;span style="font-weight: bold;"&gt;Window-&gt;Preferences-&gt;Server-&gt;Installed Runtimes&lt;/span&gt;). Em princípio o problema fica resolvido quando se correr o projecto com o &lt;span style="font-weight: bold;"&gt;Run As -&gt; Run on Server&lt;/span&gt;.&lt;/li&gt;&lt;li&gt;Se o erro continuar, então efectuar o seguinte: sobre o projecto, carregando com o botão da direita, escolher &lt;span style="font-weight: bold;"&gt;Properties-&gt;Targeted Runtimes&lt;/span&gt;, e selecionar a checkbox ao lado do servidor Tomcat. Em princípio o erro desaparece.&lt;/li&gt;&lt;li&gt;Se nenhum dos passos anteriores resultar então recorrer ao seguinte: &lt;a href="http://javari.blogspot.com/2008/07/bem-quando-o-eclipse-se-passa-dos.html"&gt;Quando o eclipse se passa...&lt;/a&gt;&lt;br /&gt;&lt;/li&gt;&lt;/ol&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5858616645712211168?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5858616645712211168/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5858616645712211168' title='3 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5858616645712211168'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5858616645712211168'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/11/target-runtime-apache-tomcat-v55-is-not.html' title='Target runtime Apache Tomcat v5.5 is not defined - Parte II'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5513772897426878176</id><published>2008-10-15T22:08:00.003+01:00</published><updated>2008-10-15T22:11:44.120+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='weblogic'/><title type='text'>Configurando o Eclipse Ganymede com o Weblogic</title><content type='html'>O servidor aplicacional Weblogic não vem com uma configuração disponível no eclipse Ganymede. Para ter o Weblogic disponível na configuração dos Servers no eclipse, é necessário fazer um update que está disponível no site:&lt;br /&gt;&lt;br /&gt;&lt;a href="https://eclipse-plugin.projects.dev2dev.bea.com/update"&gt;https://eclipse-plugin.projects.dev2dev.bea.com/update&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Depois de instalado, o eclipse já encontrará os servidores Weblogic.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5513772897426878176?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5513772897426878176/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5513772897426878176' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5513772897426878176'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5513772897426878176'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/10/configurando-o-eclipse-ganymede-com-o.html' title='Configurando o Eclipse Ganymede com o Weblogic'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-6675206370465410946</id><published>2008-10-13T12:57:00.003+01:00</published><updated>2008-10-13T14:40:43.322+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='base de dados'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Cálculo de espaço ocupado na Base de Dados Oracle</title><content type='html'>A Base de Dados da Oracle, tem algumas ferramentas úteis que permitem calcular o espaço em disco que tabelas e índices virão a ocupar.&lt;br /&gt;&lt;br /&gt;&lt;h3&gt;Cálculo de Espaço em Disco de Um Index&lt;/h3&gt;O código seguinte permite saber quanto espaço em disco irá ocupar um índice depois de criado.&lt;br /&gt;&lt;br /&gt;&lt;div class="panelContent"&gt; &lt;p  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;set serveroutput on&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DECLARE&lt;br /&gt;ub NUMBER;&lt;br /&gt;ab NUMBER;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DBMS_SPACE.CREATE_INDEX_COST('CREATE INDEX t_id ON ESQUEMA.NOME_DE_TABELA(id)',ub, ab, NULL);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-style: italic;font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));&lt;br /&gt;DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));&lt;br /&gt;END;&lt;br /&gt;/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;A tabela tem de existir previamente.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Substituir &lt;span style="font-style: italic;"&gt;ESQUEMA &lt;/span&gt;e &lt;span style="font-style: italic;"&gt;NOME_TABELA&lt;/span&gt;, pelo esquema e nome da tabela onde irá ser criado o índice.&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;&lt;br /&gt;&lt;h3&gt;Cálculo de Espaço em Disco Ocupado por uma Tabela&lt;/h3&gt;Quando se está a tentar saber quanto armazenamento é necessário para acomodar uma tabela, os códigos seguintes ajudam a determinar quanto espaço é necessário.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Cálculo Feito com Base no Tamanho Médio de uma Linha&lt;br /&gt;&lt;br /&gt;&lt;/b&gt;O código seguinte permite saber, com base no tamanho médio de um registo na base de dados e no número de registos estimados, o tamanho de armazenamento necessário (em bytes) para acomodar uma tabela.&lt;br /&gt;&lt;br /&gt;&lt;div class="panelContent"&gt; &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;set serveroutput on&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DECLARE&lt;br /&gt;ub NUMBER;&lt;br /&gt;ab NUMBER;&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;BEGIN&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DBMS_SPACE.CREATE_TABLE_COST('USERS',45000,2000000,0,ub,ab);&lt;/span&gt;&lt;/p&gt;  &lt;p  style="font-family:georgia;"&gt;&lt;span style="font-size:78%;"&gt;DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));&lt;br /&gt;DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));&lt;br /&gt;END;&lt;br /&gt;/&lt;/span&gt;&lt;/p&gt;&lt;p face="georgia"&gt;Onde,&lt;/p&gt;&lt;p style="font-family: georgia;"&gt;&lt;b&gt;&lt;em&gt;USERS&lt;/em&gt;&lt;/b&gt; - Tablespace onde a tabela irá ser criada.&lt;br /&gt;&lt;b&gt;&lt;em&gt;45000&lt;/em&gt;&lt;/b&gt; - Tamanho médio de uma linha em bytes.&lt;br /&gt;&lt;b&gt;&lt;em&gt;2000000&lt;/em&gt;&lt;/b&gt; - Número total de linhas que a tabela irá conter.&lt;br /&gt;&lt;b&gt;&lt;em&gt;0&lt;/em&gt;&lt;/b&gt; - Espaço livre que a tabela deverá ter para novos inserts e updates.&lt;/p&gt;&lt;p style="font-family: georgia;"&gt;&lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: georgia;"&gt;&lt;b&gt;Cálculo Feito com Base na Especificação de uma Tabela&lt;/b&gt;&lt;/p&gt;&lt;p style="font-family: georgia;"&gt;O código seguinte permite saber o tamanho de armazenamento necessário para uma tabela, com a especificação fornecida e com o número de registos estimados.&lt;/p&gt;&lt;div class="panelContent"&gt; &lt;p&gt;&lt;span style="font-size:78%;"&gt;set serveroutput on&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:78%;"&gt;DECLARE&lt;br /&gt;ub NUMBER;&lt;br /&gt;ab NUMBER;&lt;br /&gt;cl sys.create_table_cost_columns;&lt;br /&gt;BEGIN&lt;br /&gt;cl := sys.create_table_cost_columns(&lt;br /&gt;sys.create_table_cost_colinfo('VARCHAR2',100),&lt;br /&gt;sys.create_table_cost_colinfo('CHAR',1),&lt;br /&gt;sys.create_table_cost_colinfo('DATE',NULL),&lt;br /&gt;sys.create_table_cost_colinfo('NUMBER',4)&lt;br /&gt;);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:78%;"&gt;DBMS_SPACE.CREATE_TABLE_COST('USERS',cl,2000000,0,ub,ab);&lt;/span&gt;&lt;/p&gt;  &lt;p&gt;&lt;span style="font-size:78%;"&gt;DBMS_OUTPUT.PUT_LINE('Used Bytes: ' || TO_CHAR(ub));&lt;br /&gt;DBMS_OUTPUT.PUT_LINE('Alloc Bytes: ' || TO_CHAR(ab));&lt;br /&gt;END;&lt;br /&gt;/&lt;/span&gt;&lt;/p&gt;&lt;p&gt;Onde,&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&lt;b&gt;&lt;em&gt;USERS&lt;/em&gt;&lt;/b&gt; - Tablespace onde a tabela irá ser criada.&lt;b&gt;&lt;em&gt;&lt;br /&gt;&lt;/em&gt;&lt;/b&gt;&lt;/p&gt;&lt;p&gt;&lt;b&gt;&lt;em&gt;cl&lt;/em&gt;&lt;/b&gt; - Definição da tabela cujo espaço é pretendido calcular.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;em&gt;2000000&lt;/em&gt;&lt;/b&gt; - Número total de linhas que a tabela irá conter.&lt;/p&gt;  &lt;p&gt;&lt;b&gt;&lt;em&gt;0&lt;/em&gt;&lt;/b&gt; - Espaço livre que a tabela deverá ter para novos inserts e updates.&lt;/p&gt;&lt;p style="font-family: georgia;"&gt;&lt;span style="font-size:78%;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt; &lt;/div&gt;   &lt;b&gt;&lt;br /&gt;&lt;/b&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-6675206370465410946?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/6675206370465410946/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=6675206370465410946' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6675206370465410946'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/6675206370465410946'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/10/clculo-de-espao-ocupado-na-base-de.html' title='Cálculo de espaço ocupado na Base de Dados Oracle'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7765451083727061075</id><published>2008-09-10T11:10:00.003+01:00</published><updated>2008-09-10T11:17:05.349+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='plug-ins'/><title type='text'>Adicionando Itens aos Menus de Lançamento do Eclipse (XXX as)</title><content type='html'>A lógica de adicionar um novo item a um menu de Eclipse de lançamento (&lt;span style="font-weight: bold;"&gt;Run As&lt;/span&gt;, &lt;span style="font-weight: bold;"&gt;Debug As&lt;/span&gt;) deve ser feita de modo diferente de adicionar um item a um outro qualquer menu (seja menu, toolbal ou popupmenu).&lt;br /&gt;&lt;br /&gt;Um item a ser colocado num menu de lançamento tem de estender&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;extension point="org.eclipse.debug.ui.launchShortcuts"&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7765451083727061075?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7765451083727061075/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7765451083727061075' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7765451083727061075'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7765451083727061075'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/09/adicionando-itens-aos-menus-de.html' title='Adicionando Itens aos Menus de Lançamento do Eclipse (XXX as)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-859528905785473427</id><published>2008-09-10T10:54:00.005+01:00</published><updated>2008-09-10T11:09:21.299+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='plug-ins'/><title type='text'>Forçar um Plug-In de Eclipse a Ser Carregado</title><content type='html'>Quando se desenvolve um plug-in para Eclipse (versão 3.3 ou superior) que necessita de adicionar itens a menus, e o estado destes itens dependem de condições (por exemplo a opção estar activa ou não), então, &lt;span style="font-style: italic;"&gt;&lt;span style="font-weight: bold;"&gt;estas condições só serão verificadas se o plug-in já estiver sido carregado&lt;/span&gt;&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Para não obrigar o plug-in a ser carregado cada vez que o Eclipse é iniciado (gastando recursos sem necessidade), existem 2 opções que permitem que as condições sejam verificadas, mesmo se o plug-in ainda não estiver sido carregado, quando os itens têm de ser mostrados em menus:&lt;br /&gt;- Uma é ter activa a opção - &lt;span style="font-weight: bold;"&gt;Activate this plug-in when one of its classes is loaded&lt;/span&gt;&lt;br /&gt;- Outra é ter a opção na condição &lt;span style="font-weight: bold;"&gt;forcePlugInActivation&lt;/span&gt; a &lt;span style="font-weight: bold;"&gt;true&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A opção &lt;span style="font-weight: bold;"&gt;forcePluginActivation&lt;/span&gt; só aparece para condições do tipo &lt;span style="font-weight: bold;"&gt;test&lt;/span&gt;. Se os menus estiverem a ser mal disponibilizados, pode-se forçar a criação de um teste &lt;span style="font-weight: bold;"&gt;"dummy"&lt;/span&gt; só para obrigar a carregar o plug-in, fazendo com que a partir daí os menus sejam correctamente disponibilizados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-859528905785473427?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/859528905785473427/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=859528905785473427' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/859528905785473427'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/859528905785473427'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/09/forar-um-plug-in-de-eclipse-ser.html' title='Forçar um Plug-In de Eclipse a Ser Carregado'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5793167874165101291</id><published>2008-09-10T10:31:00.004+01:00</published><updated>2008-09-10T10:51:38.004+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='plug-ins'/><title type='text'>Criação de Acções (Comandos) em Plug-Ins de Eclipse a Partir da Versão 3.3</title><content type='html'>As acções no Eclipse permitem estender os menus existentes, adicionar novos menus, criar botões nas toolbars, menus de popup, etc., que por sua vez podem (ou não) levar à execução de código.&lt;br /&gt;&lt;br /&gt;As acções são essenciais na criação de novos plug-ins.&lt;br /&gt;&lt;br /&gt;A partir da versão 3.3 do Eclipse (Europa), o mecanismo de criação de acções mudou radicalmente. Embora o mecanismo anterior de criação de acções através de &lt;span style="font-weight:bold;"&gt;actionSets&lt;/span&gt; ainda se mantenha, este por ser bastante limitado deve ser abandonado. &lt;br /&gt;&lt;br /&gt;A partir de agora deve-se utilizar o mecanismo que foi baptizado de &lt;span style="font-weight:bold;"&gt;commands&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Os &lt;span style="font-weight:bold;"&gt;commands&lt;/span&gt; além de permitirem a separação real entre a definição de um comando e o código que o comando executa, alarga de sobremaneira as condições associadas ao comando. Estas condições permitem definir por exemplo quando um comando está visível, quando está activo, quando está acessível, etc. Os &lt;span style="font-weight:bold;"&gt;commands&lt;/span&gt; permitem também a reutilização em larga escala da definição do comando (coisa que com &lt;span style="font-weight:bold;"&gt;actionSets &lt;/span&gt;é impossível).&lt;br /&gt;&lt;br /&gt;É necessário ter bastante cuidado quando se segue um tutorial para criação de um plug-in em Eclipse. Se já se está a desenvolver um plug-in para a versão 3.3 ou superior, então convém seguir tutoriais e exemplos que já utilizem a noção de comandos. Não é que tutoriais mais antigos eventualmente não funcionem, mas os comandos alargam e facilitam em larga escala o desenvolvimento.&lt;br /&gt;&lt;br /&gt;Convém também notar que entre a versão 3.3 (Europa) e a 3.4 (Ganymede) a API dos comandos (e não só) sofreu alterações.&lt;br /&gt;&lt;br /&gt;No link seguinte explica-se a noção de comandos:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.ibm.com/developerworks/library/os-eclipse-3.3menu/index.html"&gt;http://www.ibm.com/developerworks/library/os-eclipse-3.3menu/index.html&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5793167874165101291?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5793167874165101291/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5793167874165101291' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5793167874165101291'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5793167874165101291'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/09/criao-de-aces-comandos-em-plug-ins-de.html' title='Criação de Acções (Comandos) em Plug-Ins de Eclipse a Partir da Versão 3.3'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-1363806781327953615</id><published>2008-09-02T19:30:00.004+01:00</published><updated>2008-09-04T17:26:53.997+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='plug-ins'/><title type='text'>Como criar um Plug-In de Eclipse</title><content type='html'>Eis um bom tutorial de como criar um plug-in de Eclipse:&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.javabeat.net/articles/26-introduction-to-eclipse-plugin-architecture-1.html"&gt;http://www.javabeat.net/articles/26-introduction-to-eclipse-plugin-architecture-1.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Uma boa referência, diria mesmo imprescindível, para começar a construir plug-ins em Eclipse de real qualidade, é o livro &lt;a href="http://www.amazon.com/Eclipse-Building-Commercial-Quality-Plug-ins-2nd/dp/032142672X/ref=sr_1_2?ie=UTF8&amp;s=books&amp;qid=1220545265&amp;sr=8-2"&gt;Eclipse: Building Commercial-Quality Plug-ins&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;O próprio Eclipse vem com um conjunto de templates e exemplos pré-definidos que ajudam bastante no desenvolvimento de novos plug-ins.&lt;br /&gt;&lt;br /&gt;Neste caso em particular, é bom aprender por exemplo, pois o desenvolvimento de novos plug-ins é bastante complexo e sem ser através de exemplos, tinha-se de saber bastante sobre a framework.&lt;br /&gt;&lt;br /&gt;Para desenvolver novos plug-ins tem de se ter instalado o &lt;span style="font-weight:bold;"&gt;PDE&lt;/span&gt; (Plugin Development Environment)&lt;br /&gt;&lt;br /&gt;O Eclipse na secção &lt;span style="font-weight:bold;"&gt;Help-&gt;Help Contents-&gt;Platform Plug-in Developer Guide&lt;/span&gt;, contém uma referência sobre o PDE e também a API completa do PDE. Esta referência é bastante útil durante o desenvolvimento de novos plug-ins.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-1363806781327953615?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/1363806781327953615/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=1363806781327953615' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1363806781327953615'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/1363806781327953615'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/09/como-criar-um-plug-in-de-eclipse.html' title='Como criar um Plug-In de Eclipse'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-158811732604559396</id><published>2008-08-29T16:14:00.002+01:00</published><updated>2008-08-29T16:17:00.976+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jaiphon'/><title type='text'>Do you jaiphon?</title><content type='html'>Ou em português... Já Jaiphonas ?&lt;br /&gt;&lt;br /&gt;&lt;a href="http://www.jaiphon.com"&gt;www,jaiphon.com&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-158811732604559396?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/158811732604559396/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=158811732604559396' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/158811732604559396'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/158811732604559396'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/08/do-you-jaiphon.html' title='Do you jaiphon?'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-9020305352323103189</id><published>2008-08-25T12:47:00.003+01:00</published><updated>2008-08-25T12:54:45.743+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='CMS'/><title type='text'>Matriz Comparativa de CMSs</title><content type='html'>Neste site &lt;a href="http://www.cmsmatrix.org/"&gt;http://www.cmsmatrix.org/&lt;/a&gt; podem comparar todos os CMSs existentes no mercado, quer opensource quer comerciais. Ter em atenção que a comparação não é 100% fidedigna,  mas dá para ter uma ideia das capacidades de cada CMS. O maior problema do comparador está relacionado com as datas de actualização de cada CMS (o quão actualizado o CMS está) e em algumas novas capacidades que não aparecem.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-9020305352323103189?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/9020305352323103189/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=9020305352323103189' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9020305352323103189'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9020305352323103189'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/08/mariz-comparativa-de-cmss.html' title='Matriz Comparativa de CMSs'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-7055491561177614069</id><published>2008-08-12T16:34:00.002+01:00</published><updated>2008-08-12T16:45:08.423+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='jdbc'/><category scheme='http://www.blogger.com/atom/ns#' term='oracle'/><title type='text'>Invalid LOB locator specified</title><content type='html'>Durante umas largas horas estive à luta com um erro muito "abrangente" cuja mensagem é a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold; font-style: italic;"&gt;ORA-22275: invalid LOB locator specified&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;As condições nas quais o erro apareceu foram:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Base de dados Oracle 9&lt;br /&gt;&lt;/li&gt;&lt;li&gt;Chamada à BD a partir de uma classe Java&lt;/li&gt;&lt;li&gt;Chamada a um Store Procedure Oracle (PL/SQL)&lt;/li&gt;&lt;li&gt;O retorno era um CURSOR que continha lá dentro, entre outros um BLOB&lt;/li&gt;&lt;li&gt;Sempre que se tentava fazer algo com o BLOB (aceder a qualquer propriedade), o erro aparecia.&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;Depois de alguma investigação, chegou-se à conclusão (se é certa ou não isso já é outra história) de que não é possível ler um BLOB que tenha sido retornado dentro de um CURSOR.&lt;br /&gt;&lt;br /&gt;Ou seja o Store Procedure tem de devolver o BLOB directamente e não através de um CURSOR.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-7055491561177614069?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/7055491561177614069/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=7055491561177614069' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7055491561177614069'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/7055491561177614069'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/08/invalid-lob-locator-specified.html' title='Invalid LOB locator specified'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5855528681252498890</id><published>2008-07-31T18:21:00.005+01:00</published><updated>2009-03-19T21:03:12.153Z</updated><category scheme='http://www.blogger.com/atom/ns#' term='eclipse'/><category scheme='http://www.blogger.com/atom/ns#' term='tomcat'/><title type='text'>Aqui à Gato do Tom!</title><content type='html'>&lt;span style="font-weight: bold;"&gt;Actualização&lt;br /&gt;&lt;br /&gt;&lt;/span&gt;Vejam o 2º comentário. Ao que parece é uma melhor maneira de resolver o problema. Ainda não testei.&lt;br /&gt;____________________________________________________________________&lt;br /&gt;&lt;br /&gt;Bem, quando o eclipse se passa dos carretos às vezes são precisas medidas drásticas.&lt;br /&gt;&lt;br /&gt;Num determinado projecto web, depois de configurar o TomCat no &lt;span style="font-weight: bold;"&gt;Window-&gt;Preferences-&gt;Server-&gt;Installed Runtimes&lt;/span&gt;, e de correr o projecto com sucesso no "Gato do Tom", passado algum tempo (sim, não é um mito, o software degrada-se...) o projecto ao compilar começou a dar um erro muito engraçado: &lt;span style="font-weight: bold;"&gt;Target runtime Apache Tomcat v5.5 is not defined&lt;/span&gt;.&lt;br /&gt;&lt;br /&gt;Bem indo às propriedades do projecto, na parte do Server, ele estava lá. Contudo a mensagem aparecia na mesma. Depois de pesquisar na net por uma solução, nada encontrei que me ajudasse.&lt;br /&gt;&lt;br /&gt;Fiz umas pesquisas na máquina local por "Gato do Tom" nos ficheiros do projecto e encontrei 2 entradas nos seguintes ficheiros:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;org.eclipse.jst.common.project.facet.core.prefs&lt;/li&gt;&lt;li&gt;org.eclipse.wst.common.project.facet.core.xml&lt;/li&gt;&lt;/ul&gt;Comentei as entradas do "Gato do Tom" e voltei a abrir o projecto.&lt;br /&gt;&lt;br /&gt;O erro desapareceu. É caso para dizer... "&lt;span style="font-weight: bold;"&gt;Aqui à Gato (do Tom)&lt;/span&gt;!".&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5855528681252498890?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5855528681252498890/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5855528681252498890' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5855528681252498890'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5855528681252498890'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/07/bem-quando-o-eclipse-se-passa-dos.html' title='Aqui à Gato do Tom!'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-9001135413182536824</id><published>2008-07-29T16:21:00.004+01:00</published><updated>2008-07-29T16:26:08.691+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt-dnd'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt-ext'/><title type='text'>(Não) Usar GWT-EXT e GWT-DND</title><content type='html'>Se pretendem usar &lt;span style="font-weight: bold;"&gt;GWT-DND&lt;/span&gt; juntamente com &lt;span style="font-weight: bold;"&gt;GWT-EXT&lt;/span&gt;, é melhor esquecerem pois neste momento não dá para usar os dois em conjunto. O problema fundamental tem a ver com o uso de paineis (Panel) do GWT-EXT. Por alguma razão eles (os Panel) não deixam que os componentes de GWT-DND recebam os eventos que permitem fazer drag and drop impossibilitando o seu uso em conjunto. Se entretanto descobrir uma solução irei aqui colocar.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-9001135413182536824?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/9001135413182536824/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=9001135413182536824' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9001135413182536824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/9001135413182536824'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/07/no-usar-gwt-ext-e-gwt-dnd.html' title='(Não) Usar GWT-EXT e GWT-DND'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-3952736810552961675</id><published>2008-07-21T18:06:00.006+01:00</published><updated>2008-07-21T18:22:35.966+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='gwt'/><category scheme='http://www.blogger.com/atom/ns#' term='gwt-ext'/><title type='text'>Como colocar o GWT a funcionar com o GWT-EXT</title><content type='html'>Para se poder usar o &lt;span style="font-weight: bold;"&gt;GWT-EXT&lt;/span&gt; juntamente com o &lt;span style="font-weight: bold;"&gt;GWT&lt;/span&gt; num projecto, os seguintes passos têm de ser realizados:&lt;br /&gt;&lt;ul&gt;&lt;li&gt;Copiar para a pasta &lt;span style="font-weight: bold;"&gt;public&lt;/span&gt; a pasta &lt;span style="font-weight: bold;"&gt;js&lt;/span&gt; (esta pasta contém o javascript do &lt;span style="font-weight: bold;"&gt;EXT&lt;/span&gt;).&lt;/li&gt;&lt;li&gt;No &lt;span style="font-weight: bold;"&gt;HTML&lt;/span&gt; que tem o nome do módulo, é necessário adicionar as seguintes linhas:&lt;/li&gt;&lt;/ul&gt;&lt;div style="text-align: left;"&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;        &lt;!-- Begin ExtJS library files --&gt;&lt;br /&gt;&lt;/span&gt; &lt;span style="font-family:arial;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;         &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;!-- Begin ExtJS library files --&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;         &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;link rel="stylesheet" type="text/css" href="js/ext/resources/css/ext-all.css"/&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;         &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;script type="text/javascript" src="js/ext/adapter/ext/ext-base.js"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;/script&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;         &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;script type="text/javascript" src="js/ext/ext-all.js"&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;/script&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-family:arial;"&gt;        &lt;/span&gt;&lt;/span&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;         &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;!-- End ExtJS library files --&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;br /&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;        &lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;script type="text/javascript" src="js/ext/adapter/ext/ext-base.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;script type="text/javascript" src="js/ext/ext-all.js"&gt;&lt;/script&gt;&lt;/span&gt;&lt;span style="font-style: italic;font-family:arial;" &gt;&lt;!-- End ExtJS library files --&gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;/div&gt;&lt;ul&gt;&lt;li&gt;No ficheiro &lt;span style="font-weight: bold;"&gt;.gwt.xml&lt;/span&gt; do módulo colocar:&lt;br /&gt;&lt;/li&gt;&lt;/ul&gt;&lt;span style=";font-family:arial;font-size:85%;"  &gt;&lt;span style="font-family:arial;"&gt;                  &lt;/span&gt;&lt;inherits name="com.gwtext.GwtExt"&gt;&lt;/inherits&gt;&lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span style="font-family:arial;"&gt;&amp;lt;inherits name="com.gwtext.GwtExt"/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;E pronto, temos o GWT a funcionar com o GWT-EXT.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-3952736810552961675?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/3952736810552961675/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=3952736810552961675' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3952736810552961675'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/3952736810552961675'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/07/como-colocar-o-gwt-funcionar-com-o-gwt.html' title='Como colocar o GWT a funcionar com o GWT-EXT'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-899304189132378350.post-5518230431966979016</id><published>2008-07-21T12:10:00.005+01:00</published><updated>2008-07-21T18:24:36.855+01:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='comedia'/><title type='text'>Drag and Drop (Arrastar e Deixar Cair)</title><content type='html'>&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://bp3.blogger.com/_WReXG6MMD0Q/SITGTnwnQUI/AAAAAAAAAF0/ymCmnrJcLyI/s1600-h/DragAndDrop.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer;" src="http://bp3.blogger.com/_WReXG6MMD0Q/SITGTnwnQUI/AAAAAAAAAF0/ymCmnrJcLyI/s400/DragAndDrop.jpg" alt="" id="BLOGGER_PHOTO_ID_5225519508049314114" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;O que o Windows tem de bom!&lt;br /&gt;Isto vem a propósito da tarefa actual. Realizar uma consola Drag and Drop!&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/899304189132378350-5518230431966979016?l=javari.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://javari.blogspot.com/feeds/5518230431966979016/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=899304189132378350&amp;postID=5518230431966979016' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5518230431966979016'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/899304189132378350/posts/default/5518230431966979016'/><link rel='alternate' type='text/html' href='http://javari.blogspot.com/2008/07/drag-and-drop-arrastar-e-deixar-cair.html' title='Drag and Drop (Arrastar e Deixar Cair)'/><author><name>pringi</name><uri>http://www.blogger.com/profile/01326115217218336822</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://bp3.blogger.com/_WReXG6MMD0Q/SITGTnwnQUI/AAAAAAAAAF0/ymCmnrJcLyI/s72-c/DragAndDrop.jpg' height='72' width='72'/><thr:total>0</thr:total></entry></feed>
