Página Web destinada a publicação de informações referente à soluções em tecnologia.
segunda-feira, 25 de fevereiro de 2013
Qual melhor distribuição Linux?
Para responder esta pergunta, de acordo com sua necessidade, clique neste Link e responda as perguntas.
Habilitar USB no VirtualBox - Ubuntu
1º Baixar o Extension Pack: http://download.virtualbox.org/virtualbox/4.2.6/Oracle_VM_VirtualBox_Extension_Pack-4.2.6-82870.vbox-extpack
2° Digitar o comando no terminal: usermod wendell -a -G vboxusers
3º Verificar se o usuário foi adicionado através do comando: getent group | grep vboxusers
4º Reiniciar a sessão do usuário
5º No VirtualBox, habilitar a controladora USB 2.0 no menu configuração da máquina virtual.
2° Digitar o comando no terminal: usermod wendell -a -G vboxusers
3º Verificar se o usuário foi adicionado através do comando: getent group | grep vboxusers
4º Reiniciar a sessão do usuário
5º No VirtualBox, habilitar a controladora USB 2.0 no menu configuração da máquina virtual.
quinta-feira, 21 de fevereiro de 2013
Diferença entre colocar as notações do mapeamento nos métodos getters e colocar nos atributos privados - JSF
Quando você coloca as anotações da JPA nos
atributos, o framework usará Reflection para acessar os valores. Em
alguns casos, valores são carregados prematuramente, pois o framework
não interceptará as chamadas nos métodos getters, por isso, ele carrega
do banco de dados antes mesmo do momento necessário.
É aconselhado mapear sempre nos getters.
Nunca misture as duas formas de mapeamento, pois o comportamento pode ser inesperado.
É aconselhado mapear sempre nos getters.
Nunca misture as duas formas de mapeamento, pois o comportamento pode ser inesperado.
Importância dos métodos hashCode e equals - JSF
Para que os objetos sejam diferenciados uns de outros, precisamos implementar o métodos equals().
No banco de dados, as chaves primárias diferenciam registros distintos. Quando mapeamos uma entidade de uma tabela, devemos criar o método equals(), levando em consideração a forma em que os registros são diferenciados no banco de dados.
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pessoa other = (Pessoa) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
Veja que nesse exemplo, esse método é baseado no atributo "codigo", que representa a chave na tabela do banco de dados.
O método hashCode() ajuda a criar um critério para espalhar os diversos objetos dentro de uma tabela de espalhamento. Isso é importante para um determinado objeto ser encontrado mais rapidamente, melhorando a performance do software, pois evita muitas comparações desnecessárias durante uma busca em memória.
No banco de dados, as chaves primárias diferenciam registros distintos. Quando mapeamos uma entidade de uma tabela, devemos criar o método equals(), levando em consideração a forma em que os registros são diferenciados no banco de dados.
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((codigo == null) ? 0 : codigo.hashCode());
return result;
}
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Pessoa other = (Pessoa) obj;
if (codigo == null) {
if (other.codigo != null)
return false;
} else if (!codigo.equals(other.codigo))
return false;
return true;
}
Veja que nesse exemplo, esse método é baseado no atributo "codigo", que representa a chave na tabela do banco de dados.
O método hashCode() ajuda a criar um critério para espalhar os diversos objetos dentro de uma tabela de espalhamento. Isso é importante para um determinado objeto ser encontrado mais rapidamente, melhorando a performance do software, pois evita muitas comparações desnecessárias durante uma busca em memória.
Associar atributos ao componente que usa o conversor - JSF
Deve-se colocar na página xhtml:
<h:inputText ....>
<f:converter .... />
<f:attribute name="nomeDoAtributo" value="#{.....}"/>
</h:inputText>
E no conversor pega o atributo da seguinte forma:
String valor = (String) component.getAttributes().get("nomeDoAtributo");
<h:inputText ....>
<f:converter .... />
<f:attribute name="nomeDoAtributo" value="#{.....}"/>
</h:inputText>
E no conversor pega o atributo da seguinte forma:
String valor = (String) component.getAttributes().get("nomeDoAtributo");
Como limpar cache no navegador
Apertando as teclas CTRL+ F5 a página é atualizada e o cache é limpado. Foi testado esta solução nos navegadores FireFox e Chrome.
Um exemplo de utilização desta solução é quando se faz uma alteração em um arquivo CSS de um projeto WEB e o mesmo não é atualizado no navegador.
Um exemplo de utilização desta solução é quando se faz uma alteração em um arquivo CSS de um projeto WEB e o mesmo não é atualizado no navegador.
quarta-feira, 20 de fevereiro de 2013
Plugin para máscara usando javascript
meioMask is a simple use plugin for creating and applying masks at text input fields.
http://www.meiocodigo.com/projects/meiomask/
http://www.meiocodigo.com/projects/meiomask/
Páginas JSF sem extensão
Para tornar suas URLs amigáveis, você pode usar a biblioteca PrettyFaces (http://ocpsoft.org/prettyfaces/).
Baixe o JAR do PrettyFaces, importe em seu projeto, configure o arquivo web.xml e crie um novo chamado pretty-config.xml.
pretty-config.xml
<!-- Este arquivo deve ser colocado na pasta WEB-INF -->
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.2 http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.2.xsd">
<url-mapping id="cadastroLancamento">
<pattern value="/cadastro-lancamento" />
<view-id value="/CadastroLancamento.xhtml" />
</url-mapping>
<url-mapping id="consultaLancamento">
<pattern value="/consulta-lancamento" />
<view-id value="/ConsultaLancamento.xhtml" />
</url-mapping>
</pretty-config>
web.xml
<!-- Incluir esse fragmento de código no arquivo web.xml -->
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Baixe o JAR do PrettyFaces, importe em seu projeto, configure o arquivo web.xml e crie um novo chamado pretty-config.xml.
pretty-config.xml
<!-- Este arquivo deve ser colocado na pasta WEB-INF -->
<pretty-config xmlns="http://ocpsoft.com/prettyfaces/3.3.2"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://ocpsoft.com/prettyfaces/3.3.2 http://ocpsoft.com/xml/ns/prettyfaces/ocpsoft-pretty-faces-3.3.2.xsd">
<url-mapping id="cadastroLancamento">
<pattern value="/cadastro-lancamento" />
<view-id value="/CadastroLancamento.xhtml" />
</url-mapping>
<url-mapping id="consultaLancamento">
<pattern value="/consulta-lancamento" />
<view-id value="/ConsultaLancamento.xhtml" />
</url-mapping>
</pretty-config>
web.xml
<!-- Incluir esse fragmento de código no arquivo web.xml -->
<filter>
<filter-name>Pretty Filter</filter-name>
<filter-class>com.ocpsoft.pretty.PrettyFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>Pretty Filter</filter-name>
<url-pattern>/*</url-pattern>
<dispatcher>FORWARD</dispatcher>
<dispatcher>REQUEST</dispatcher>
<dispatcher>ERROR</dispatcher>
</filter-mapping>
Configurar extensão dos arquivos JSF
A configuração do mapeamento dos arquivos são feitas no arquivo web.xml.
Neste exemplo todos os arquivos .xhtml são mapeados:
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Um exemplo sem precisar utilizar a extensão do arquivo:
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Neste segundo exemplo deve-se acessar o sistema da seguinte forma:
http://localhost:8080/SistemaTeste/faces/CadastroTeste
Neste exemplo todos os arquivos .xhtml são mapeados:
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>*.xhtml</url-pattern>
</servlet-mapping>
Um exemplo sem precisar utilizar a extensão do arquivo:
<servlet-mapping>
<servlet-name>facesServlet</servlet-name>
<url-pattern>/faces/*</url-pattern>
</servlet-mapping>
Neste segundo exemplo deve-se acessar o sistema da seguinte forma:
http://localhost:8080/SistemaTeste/faces/CadastroTeste
Fazer um bean ser instanciado no momento que o servidor for startado
Para fazer isso, precisa-se de um bean com
escopo de aplicação. Basta adicionar um atributo na anotação
@ManagedBean, para dizer que a inicialização do managed bean deve ser
ansiosa (eager, em inglês):
@ManagedBean(eager=true)
@ApplicationScoped
public class MeuBean {
}
@ManagedBean(eager=true)
@ApplicationScoped
public class MeuBean {
}
Definir o tempo da expiração da Sessão JSF 2
Para definir o tempo da expiração da sessão em um sistema JSF deve-se configurar o arquivo web.xml com o seguinte código:
<session-config>
<session-timeout>30</session-timeout>
</session-config>
O tempo é definido em minutos.
Podemos também criar cookies com JSF, utilizando o código abaixo no managed bean:
Cookie codigo = new Cookie("codigo", "1");
codigo.setMaxAge(3600);
((HttpServletResponse)facesContext.getExternalContext().getResponse())
.addCookie(codigo);
Observe que deve-se gerar o valor do código e não utilizar um valor fixo como neste exemplo.
Para recuperar os cookies, utiliza-se o código abaixo, assim é só procurar o cookie salvo previamente e autenticar o usuário:
FacesContext facesContext = FacesContext.getCurrentInstance();
Cookie cookies[] = ((HttpServletRequest)facesContext.getExternalContext()
.getRequest()).getCookies;
<session-config>
<session-timeout>30</session-timeout>
</session-config>
O tempo é definido em minutos.
Podemos também criar cookies com JSF, utilizando o código abaixo no managed bean:
Cookie codigo = new Cookie("codigo", "1");
codigo.setMaxAge(3600);
((HttpServletResponse)facesContext.getExternalContext().getResponse())
.addCookie(codigo);
Observe que deve-se gerar o valor do código e não utilizar um valor fixo como neste exemplo.
Para recuperar os cookies, utiliza-se o código abaixo, assim é só procurar o cookie salvo previamente e autenticar o usuário:
FacesContext facesContext = FacesContext.getCurrentInstance();
Cookie cookies[] = ((HttpServletRequest)facesContext.getExternalContext()
.getRequest()).getCookies;
terça-feira, 19 de fevereiro de 2013
Serviço para publicação de imagens na nuvem
http://troll.ws/
Troll is a simple tool that lets you share images and text with friends
Esta é uma ótima solução para compartilhar imagens na internet de forma rápida e prática.
Outra opção é http://snag.gy/
Para utiliza-lo basta copiar a imagem desejada para a área de tranasferência (CTRL + C) e depois colar a imagem (CTRL + V) na página inicial do site. Será carregada a imagem e depois publicado o link para a exibição da imagem.
Troll is a simple tool that lets you share images and text with friends
Esta é uma ótima solução para compartilhar imagens na internet de forma rápida e prática.
Outra opção é http://snag.gy/
Para utiliza-lo basta copiar a imagem desejada para a área de tranasferência (CTRL + C) e depois colar a imagem (CTRL + V) na página inicial do site. Será carregada a imagem e depois publicado o link para a exibição da imagem.
Problemas com referência das bibliotecas no Eclipse
Devem ser verificadas as seguintes configurações no Eclipse:
Clicando com o botão direito no projeto exibido na paleta Package Explorer; opção Properties > Java Build Path e adicionar as bibliotecas necessárias no projeto.
Deve-se também verificar a opção Deployment Assembly no mesmo menu e inserir as bibliotecas (Source) na pasta WEB-INF/lib (Deploy Path) do projeto.
Clicando com o botão direito no projeto exibido na paleta Package Explorer; opção Properties > Java Build Path e adicionar as bibliotecas necessárias no projeto.
Deve-se também verificar a opção Deployment Assembly no mesmo menu e inserir as bibliotecas (Source) na pasta WEB-INF/lib (Deploy Path) do projeto.
CANNOT CREATE A SERVER USING THE SELECTED TYPE - ECLIPSE
Este é um problema comum no IDE Eclipse que ocorre geralmente quando adicionamos e configuramos um novo servidor mas depois removemos.
Quando queremos adicionar outro servidor igual ao que foi removido o Eclipse não permite criarmos outro.
Solução: No menu Window > Preferences > Server > Runtime Environments será exibida uma tabela com os servidores configurados no Eclipse.
Basta então selecionar o servidor que se deseja remover e clicar em Remove.
Agora poderá ser criado outro servidor no Eclipse.
Diferenças entre EJB, Tomcat e GlassFish
![]() |
Tomcat |
EJB (Enterprise JavaBeans) é uma especificação que faz parte da Java EE. É um componente executado em um servidor de aplicação, que simplifica o desenvolvimento de componentes distribuídos, transacionais e seguros.
Você deve pensar em usar EJB caso tenha necessidade, por exemplo, de separar as classes negócio em um servidor e a interface com o usuário em outro servidor.
Apesar da possibilidade de chamada de componentes remotos, você não precisa desse requisito para usar EJB. Com essa tecnologia, o controle de transação e a segurança de sua aplicação são simplificados também.
Tomcat é apenas um Servlet Container, ou seja, ele implementa as especificações de Servlets e JSP (que fazem parte do Java EE). Tomcat não implementa EJB.
![]() |
GlassFish |
Não acredite em pessoas que falam que Tomcat não é bom para produção, se os argumentos não forem baseados em testes. Só porque ele não implementa todas as especificações, não quer dizer que ele é pior.
Se o que você precisa é colocar em produção um sistema web, feito em JSF e JPA, por exemplo, Tomcat é mais do que suficiente.
A única semelhança entre Enterprise JavaBeans (EJB) e JavaBeans são os nomes, por isso, não devem ser comparados.
EJB é a especificação que faz parte da Java EE.
JavaBeans são classes Java criadas seguindo uma convenção: os objetos devem ser serializáveis, com um construtor padrão e deve possuir métodos getters e setters para acessar os atributos de instância.
Assinar:
Postagens (Atom)