tag:blogger.com,1999:blog-57807758977199557832024-03-28T20:27:47.834-07:00Olá Mundo - JavaEsse blog traz várias dicas de programação, principalmente voltadas para o mundo Java, mas também fala sobre Front-End, Banco de Dados e muito mais.Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.comBlogger153125tag:blogger.com,1999:blog-5780775897719955783.post-66265213602178369372024-02-08T11:38:00.000-08:002024-02-14T10:44:02.402-08:00Relacionamento bidirecional recursivo com JPA<p> <span> </span><span> </span><span> </span><span style="font-size: 14pt; text-align: justify; text-indent: 35.4pt;">Neste
artigo vou mostrar um exemplo de um relacionamento bidirecional recursivo, ou
seja, o objeto faz referência a ele mesmo. </span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">As vezes ao invés de usar herança, essa solução resolve de forma mais simples não tendo que alterar muita coisa no modelo já existente.
Recentemente usei ela para o desdobramento de uma entidade que era a base do sistema e foi reclassificado em elementos "pai e filho". </span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Claro que houve a necessidade de aumentar alguns campos na tabela que serão usados apenas quando for "filho" ou "pai", mas a desnormalização do modelo muitas vezes se faz necessário. </span><span style="font-size: 14pt; text-indent: 35.4pt;">O uso de outra solução acarretaria em uma grande mudança em todo o sistema. </span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-size: 14pt; text-indent: 35.4pt;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-size: 14pt; text-indent: 35.4pt;">Para o exemplo vamos pensar para fins didáticos em uma cadeia de comando onde um Chefe tem Subordinados,
mas também está subordinado à um Chefe.</span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">No
banco existem os seguintes campos: id, nome e chefe_superior_id</span><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">.</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"> Segue
o código:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">import javax.persistence.*;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">import java.util.List;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">@Entity<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">@Table(name
= "chefe")<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">public
class Chefe {<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@Id<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@GeneratedValue(strategy =
GenerationType.IDENTITY)<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>private Long id;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@Column(name = "nome")<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>private String nome;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: left;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@OneToMany(mappedBy = "chefe",
cascade = CascadeType.ALL, fetch = FetchType.LAZY)<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>private List<Chefe> subordinados;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@ManyToOne<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>@JoinColumn(name = "chefe_superior_id")<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>private Chefe chefe;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span>// getters e setters<o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Amasis MT Pro",serif; font-size: 14pt; line-height: 107%;">}<o:p></o:p></span></b></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-14612834714033424302023-12-18T11:25:00.000-08:002023-12-18T11:25:59.434-08:00Aumentando o limite do tamanho de upload de arquivos do JBoss EAP<p> </p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Nesse artigo vou mostrar como permitir requisições de
grande tamanho para o JBoss EAP. Por padrão ele barra requisições maiores que
10Mb, o que para os dias atuais não é muita coisa, já que qualquer imagem ou
PDF facilmente passa esse tamanho.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">No JBoss EAP, a partir da versão 7 foi incluído um
novo servidor web extremamente leve e de alto desempenho da própria RedHat
chamado Undertown, substituindo o Tomcat que rodava internamente no JBoss. No standalone.xml
encontramos seu submódulo como abaixo:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><subsystem xmlns="urn:jboss:domain:undertow:4.0"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><buffer-cache name="default"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <server name="default-server"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><http-listener
name="default" socket-binding="http" enable-http2="false"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><ajp-listener
name="ajp" socket-binding="ajp" /><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><host name="default-host"
alias="localhost"><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span><location name="/" handler="welcome-content"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><filter-ref name="server-header"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><filter-ref name="x-powered-by-header"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></host><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></server><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><servlet-container
name="default"><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><jsp-config/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><websockets/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span></servlet-container><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <handlers><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><file name="welcome-content"
path="${jboss.home.dir}/welcome-content"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></handlers><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><filters><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><response-header
name="server-header" header-name="Server" header-value="JBoss-EAP/7"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <response-header
name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%; mso-ansi-language: PT-BR;"> <span style="mso-tab-count: 1;"> </span></filters><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%; mso-ansi-language: PT-BR;"></subsystem><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">E é nele que precisamos configurar a permissão para
grandes arquivos, dentro das <b>tags <http-listener> e
<ajp-listener>. </b>Nesse exemplo vou configurar para 1GB, mas você
precisa ver de acordo com sua necessidade.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><subsystem xmlns="urn:jboss:domain:undertow:4.0"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><buffer-cache name="default"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <server name="default-server"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><http-listener
name="default" socket-binding="http" <span style="background: yellow; color: red; mso-highlight: yellow;">max-post-size="1073741824"</span><span style="color: red;"> </span>enable-http2="false"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><ajp-listener
name="ajp" socket-binding="ajp" <span style="background: yellow; color: red; mso-highlight: yellow;">max-post-size="1073741824"</span>
/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><host name="default-host"
alias="localhost"><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span><location name="/" handler="welcome-content"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><filter-ref name="server-header"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><filter-ref name="x-powered-by-header"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></host><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></server><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><servlet-container
name="default"><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><jsp-config/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span><websockets/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span></servlet-container><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <handlers><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><file name="welcome-content"
path="${jboss.home.dir}/welcome-content"/><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"></handlers><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><filters><o:p></o:p></span></b></p>
<p class="MsoNormal" style="margin-left: 36.0pt; text-indent: 36.0pt;"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"><response-header
name="server-header" header-name="Server" header-value="JBoss-EAP/7"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <response-header
name="x-powered-by-header" header-name="X-Powered-By" header-value="Undertow/1"/><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%;"> <span style="mso-tab-count: 1;"> </span></span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%; mso-ansi-language: PT-BR;"></filters><o:p></o:p></span></b></p>
<p class="MsoNormal"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; line-height: 107%; mso-ansi-language: PT-BR;"></subsystem><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Com isso o JBoss agora passa a permitir um grande
tráfego de dados, mas ainda é possível configurar outros controles como no
Spring por exemplo.<o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-50132707832483290072023-11-01T14:09:00.003-07:002023-11-02T06:52:17.793-07:00Functions, Triggers e Procedures no PostgreSQL<p><span face="Helvetica, sans-serif" style="font-size: 14pt; line-height: 107%; text-align: justify;"> </span></p><p><span face="Helvetica, sans-serif" style="font-size: 14pt; line-height: 107%; text-align: justify;"> </span><span face="Helvetica, sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; text-align: justify;">Nesse artigo
vou trazer um exemplo de Functions, Triggers e Procedures no PostgreSQL. Antes
vamos entender um pouco a diferença entre eles:</span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">1.<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Funções (Functions):<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">As
funções são rotinas ou subprogramas que recebem um ou mais parâmetros de
entrada, realizam cálculos ou operações e retornam um valor.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Elas
podem ser chamadas a partir de instruções SQL, expressões ou outras funções.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">As
funções podem ser usadas para encapsular lógica de negócio complexa e fornecer
um resultado computado.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Exemplo:
Uma função que calcula a idade com base na data de nascimento.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">2.<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Triggers:<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Triggers
são procedimentos armazenados que são automaticamente invocados em resposta a
um evento específico que ocorre no banco de dados.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Eles
são acionados por ações, como inserção, atualização ou exclusão de dados em uma
tabela.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Os
triggers podem ser usados para impor regras de negócio, manter integridade
referencial, auditar alterações de dados, entre outras funcionalidades.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Exemplo:
Um trigger que atualiza um campo de data de modificação sempre que uma linha é
atualizada em uma tabela.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">3.<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Procedimentos (Procedures):<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Os
procedimentos são rotinas ou subprogramas que podem receber parâmetros de
entrada, executar um conjunto de instruções e, opcionalmente, retornar valores.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Eles
são usados para agrupar um conjunto de instruções que podem ser executadas
repetidamente ou como uma unidade lógica.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Os
procedimentos podem ser chamados a partir de outros procedimentos, instruções
SQL ou de uma aplicação externa.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 72pt; mso-list: l0 level2 lfo1; tab-stops: list 72.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span lang="PT-BR" style="font-family: Symbol; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR; mso-bidi-font-family: Symbol; mso-bidi-font-size: 14.0pt; mso-fareast-font-family: Symbol;"><span style="mso-list: Ignore;">·<span style="font: 7pt "Times New Roman";">
</span></span></span><!--[endif]--><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Exemplo:
Um procedimento que insere um registro em uma tabela e atualiza um contador.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Agora vamos aos exemplos:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">1 – Function<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Função<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">CREATE OR REPLACE FUNCTION </span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">calcularIdade(data_nascimento <span style="color: #4472c4; mso-themecolor: accent1;">DATE</span>) <span style="color: #4472c4; mso-themecolor: accent1;">RETURNS INTEGER AS<o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">DECLARE<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span>idade <span style="color: #4472c4; mso-themecolor: accent1;">INTEGER</span>;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">BEGIN<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span>idade := <span style="color: #4472c4; mso-themecolor: accent1;">EXTRACT(YEAR
FROM CURRENT_DATE) - EXTRACT(YEAR FROM </span>data_nascimento);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">RETURN</span> idade;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">END</span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;">;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">LANGUAGE</span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"> plpgsql;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">--Chamada da função<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">SELECT calcularIdade('1990-05-10');<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">2 – Trigger<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Temos uma tabela<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">CREATE TABLE</span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> produtos (<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span></span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;">id <span style="color: #4472c4; mso-themecolor: accent1;">SERIAL PRIMARY KEY</span>,<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span>nome <span style="color: #4472c4; mso-themecolor: accent1;">VARCHAR(50)</span>,<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span></span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">quantidade <span style="color: #4472c4; mso-themecolor: accent1;">INTEGER</span>,<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>data_atualizacao <span style="color: #4472c4; mso-themecolor: accent1;">DATE</span><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Criação da função usada pelo
Trigger<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">CREATE
OR REPLACE FUNCTION </span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;">atualizarDataAtualizacao()<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">RETURNS TRIGGER AS</span><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">DECLARE<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">BEGIN</span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span>NEW.data_atualizacao := <span style="color: #4472c4; mso-themecolor: accent1;">CURRENT_DATE</span>;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">RETURN NEW;<o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">END;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">LANGUAGE
plpgsql</span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;">;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Criação da Trigger<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-themecolor: accent1;">CREATE
TRIGGER</span></b><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"> trigger_atualizar_data<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">BEFORE INSERT OR
UPDATE ON </span>produtos<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">FOR EACH ROW</span><o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><span style="mso-spacerun: yes;">
</span><span style="color: #4472c4; mso-themecolor: accent1;">EXECUTE FUNCTION </span>atualizarDataAtualizacao();<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Utilização da Trigger ocorre
automaticamente<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">INSERT INTO </span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">produtos (nome, quantidade) <span style="color: #4472c4; mso-themecolor: accent1;">VALUES</span> ('Produto A', 10);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">UPDATE</span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> produtos <span style="color: #4472c4; mso-themecolor: accent1;">SET</span> quantidade = 20 <span style="color: #4472c4; mso-themecolor: accent1;">WHERE</span> id = 1;</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Note nesse trecho de código, na criação da função da trigger, o uso da palavra <b>NEW</b>.
NEW é uma referência a uma variável especial em PL/pgSQL usada em gatilhos
(triggers) no PostgreSQL. Quando um gatilho é acionado, ele tem acesso a duas
variáveis especiais: OLD e NEW.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">OLD</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">
contém os valores anteriores das colunas afetadas pela ação que disparou o
gatilho.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">NEW</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">
contém os novos valores que serão inseridos ou já foram inseridos devido à ação
que disparou o gatilho.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">No trecho de código acima,
NEW.data_atualizacao está sendo usado para atribuir a data atual à coluna
data_atualizacao da linha que está sendo inserida ou atualizada.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">3 – Procedure<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Criação da Procedure<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">CREATE OR REPLACE PROCEDURE </span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">inserirProduto(nome <span style="color: #4472c4; mso-themecolor: accent1;">VARCHAR(50)</span>, quantidade <span style="color: #4472c4; mso-themecolor: accent1;">INTEGER</span>)<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span><span style="color: #4472c4; mso-themecolor: accent1;">AS<o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">DECLARE<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">BEGIN<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;"><span style="mso-spacerun: yes;"> </span>INSERT INTO </span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">produtos (nome, quantidade, data_atualizacao)<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span><span style="color: #4472c4; mso-themecolor: accent1;">VALUES</span> (nome, quantidade, <span style="color: #4472c4; mso-themecolor: accent1;">CURRENT_DATE</span>);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">END;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">LANGUAGE </span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">plpgsql;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #70ad47; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent6;">-- Utilização da Procedure<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="color: #4472c4; font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR; mso-themecolor: accent1;">CALL</span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> inserirProduto('Produto B', 15);<o:p></o:p></span></b></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-37231996661457478322023-11-01T08:59:00.003-07:002023-11-01T11:12:09.949-07:00Programação funcional no Java (Java 8+)<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"> </span><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Nesse artigo
vou falar um pouco sobre programação funcional no Java. A programação funcional
se refere ao uso de conceitos e técnicas como funções de ordem superior,
expressões lambda, programação sem efeitos colaterais, imutabilidade e streams,
para escrever código mais conciso, legível (nem sempre) e robusto. Esses
recursos estão disponíveis a partir do Java 8.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Aqui estão alguns conceitos chave relacionados à
programação funcional no Java:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">1. Expressões Lambda</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: As expressões lambda permitem definir funções
anônimas (funções sem nome) de forma concisa. Elas são usadas em várias partes
do código, como argumentos para métodos, implementações de interfaces
funcionais e para criar objetos ‘Comparator’. É sempre bom lembrar da importância
da legibilidade do código, porque nem todos tem a mesma experiência, e o uso
exagerado pode atrapalhar. Um exemplo de função lambda:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> (a, b) -> a
+ b // Uma expressão lambda que adiciona
dois números<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">2. Interfaces Funcionais</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: As interfaces funcionais são interfaces que têm um
único método abstrato. Alguns
exemplos incluem ‘Function’, ‘Predicate’, ‘Consumer’ e ‘Supplier’. Você pode
usar expressões lambda para implementar essas interfaces de maneira concisa.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">3. Streams</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: Os Stream’s são sequências de elementos que podem
ser processadas de forma funcional. Eles permitem realizar operações de
consulta, transformação e agregação em coleções de dados, como listas e
conjuntos. Os Stream’s operam de forma lazy e podem ser processados
sequencialmente ou em paralelo.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">4. Imutabilidade</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: A programação funcional incentiva a imutabilidade, o
que significa que objetos não devem ser alterados após a criação. Em vez disso,
você cria novos objetos com base em objetos existentes. Isso evita efeitos
colaterais e torna o código mais previsível.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">5. Funções de Ordem Superior</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: Funções de ordem superior são funções que podem
receber outras funções como argumentos e/ou retornar funções como resultado. No
Java, usando programação funcional, você pode passar funções como argumentos para métodos e implementar
métodos que aceitam funções como parâmetros.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">6. Recursão Funcional</span></b><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">: A programação funcional incentiva o uso de recursão
funcional, onde os métodos se chamam de forma recursiva, evitando loops
tradicionais. Isso promove um código mais declarativo. <b style="background-color: #fcff01;">Porém tem que se tomar muito cuidado, pois o Java faz uso da pilha de chamadas, e caso essas chamadas recursivas sejam muito longas pode quebrar.</b> Embora esteja disponível, é uma boa prática dar preferência aos loops tradicionais caso o número de chamadas seja desconhecido ou sabidamente grande.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Aqui está um exemplo de programação funcional usando
uma expressão lambda e um Stream:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">List<Integer> numeros = Arrays.asList(1, 2, 3, 4, 5);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">// calcular a soma dos quadrados
dos números pares<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">int somaDosQuadradosDosPares = numeros.stream()<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> .filter(n -> n % 2 ==
0) // Filtrar números pares<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> .map(n -> n * n) // Elevar ao quadrado<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> .reduce(0, Integer::sum); // Somar os resultados<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></b></p>
<p class="MsoNormal" style="text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12pt; line-height: 107%; mso-ansi-language: PT-BR;">System.out.println(somaDosQuadradosDosPares); // Saída: 20<o:p></o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"> </span></p>
<p><span face="Helvetica, sans-serif" style="font-size: 14pt; text-align: justify; text-indent: 36pt;"><span> </span><span> </span>A função ‘filter’ filtra os números pares, a função ‘map’
eleva ao quadrado (ambas usando expressão lambda) e ‘reduce’ soma os
resultados. Isso ilustra a programação funcional em Java, tornando o código
mais enxuto, embora nem sempre mais claro.</span> </p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-37246034700210476112023-11-01T08:32:00.006-07:002023-11-01T08:32:59.568-07:00Transformando String de Inteiros em Lista usando Programação Funcional<p> <span> </span><span> </span><span> </span><span style="font-family: Helvetica, sans-serif; font-size: 14pt; text-align: justify;">Nesse artigo vou mostrar como transformar uma String
de números inteiros separadas por “;” em um Array de Integer usando programação
funcional em Java.</span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span>A
programação funcional ajuda muito a reduzir códigos, embora possa também, dependendo
da forma que utilizada, perder um pouco legibilidade dele. Então as vezes usar
uma forma não tão reduzida das funções e colocar comentários ajuda bastante. Lembre-se
que nem todo mundo que programa tem o mesmo nível de experiência.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span>O
código abaixo monta um Stream (Um Stream é uma sequência de elementos que pode
ser processada de forma sequencial ou paralela) a partir do split da String,
usando o Map para transformar os dados (ele pode ser usado para converter tipos
de dados, para chamar funções como UpperCase, etc.) e depois retornados como
uma lista.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="color: #c00000; font-family: "Courier New"; font-size: 12.0pt;">import</span></b><b><span style="font-family: "Courier New"; font-size: 12.0pt;"> java.util.Arrays;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="color: #c00000; font-family: "Courier New"; font-size: 12.0pt;">import</span></b><b><span style="font-family: "Courier New"; font-size: 12.0pt;"> java.util.List;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="color: #c00000; font-family: "Courier New"; font-size: 12.0pt;">import</span></b><b><span style="font-family: "Courier New"; font-size: 12.0pt;">
java.util.stream.Collectors;<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="color: #c00000; font-family: "Courier New"; font-size: 12.0pt;">public
class </span></b><b><span style="font-family: "Courier New"; font-size: 12.0pt;">Exemplo
{<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;"> </span><span style="color: #c00000;">public static
void </span>main(String[] args) {<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; mso-ansi-language: PT-BR;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>String
str = "10;20;30;40;50";</span></b></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; mso-ansi-language: PT-BR;"> </span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;"> </span>List<Integer> integerList =
Arrays.stream(str.split(";"))<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;"> </span>.map(Integer::parseInt)<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;"> </span>.collect(Collectors.toList());</span></b></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"> </span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;">
</span>integerList.forEach(System.out::println);<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span style="font-family: "Courier New"; font-size: 12.0pt;"><span style="mso-spacerun: yes;"> </span></span></b><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; mso-ansi-language: PT-BR;">}<o:p></o:p></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; text-align: justify;"><b><span lang="PT-BR" style="font-family: "Courier New"; font-size: 12.0pt; mso-ansi-language: PT-BR;">}<o:p></o:p></span></b></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-5729108640339666752023-07-26T09:07:00.003-07:002023-07-26T09:07:48.142-07:00Trabalhando com Arquivos (File) e Array de Bytes no Java <p style="text-align: justify;"> <span> As vezes precisamos transformar um arquivo em array de bytes e visse e versa seja para guardar o arquivo em banco ou tranferir na rede, e aqui seguem duas funções para fazer esse De-Para:</span></p><p style="text-align: justify;"><span><br /></span></p><div style="text-align: justify;"><b><span style="font-family: courier;"><span> </span><span> </span>public byte[] convertFileToByte(File file){<br /></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>FileInputStream fileInputStream=null;<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>byte[] bFile = new byte[(int) file.length()];<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>try {<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span> //convert file into array of bytes<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>fileInputStream = new FileInputStream(file);<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>fileInputStream.read(bFile);<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>fileInputStream.close();<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span> <br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>}catch(Exception e){<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>e.printStackTrace();<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>}<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>return bFile;<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></span></b></div><div style="text-align: justify;"><b><span style="font-family: courier;"><span style="white-space: normal;"><br /></span></span></b><b><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>public File convertByteToFile(byte[] bYtes){<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>File file = new File("file");<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>BufferedOutputStream bos;<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>try {<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>bos = new BufferedOutputStream(new FileOutputStream(file));<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>bos.write(bYtes); <br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>bos.close(); <br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>} catch (FileNotFoundException e) {<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>e.printStackTrace();<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>} catch (IOException e) {<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>e.printStackTrace();<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>} <br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>return file;<br /></span></span><span style="font-family: courier;"><span style="white-space: normal;"><span style="white-space: pre;"> </span>}</span></span></b></div><div style="text-align: justify;"></div><p style="text-align: justify;"><span style="white-space: normal; white-space: pre;"><span style="font-family: courier;"> </span></span></p><p style="text-align: justify;"><span style="white-space: normal; white-space: pre;"><span style="font-family: courier;"> </span></span></p><p style="text-align: justify;"><span style="white-space: normal; white-space: pre;"><span style="font-family: courier;"> </span></span></p><p style="text-align: justify;"><span style="white-space: normal; white-space: pre;"><span style="font-family: courier;"> </span></span></p><p style="text-align: justify;"></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-82919449390165936212023-07-19T15:31:00.002-07:002023-07-19T15:31:40.239-07:00Aplicando Máscara CNPJ em um campo no SQL Server<p> </p><p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Muitas vezes os campos como CNPJ e CPF são guardados
no banco de dados sem a formatação e pode acontecer de precisarmos pegar eles
já formatados.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Bom, segue abaixo um exemplo de função que formata no
padrão CNPJ, e que também serve de base para formatar um CPF.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: blue; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">DECLARE</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;"> @cnpj <span style="color: blue;">CHAR</span><span style="color: grey;">(</span>14<span style="color: grey;">)</span> <span style="color: grey;">=</span> <span style="color: red;">'3477929600012'</span><span style="color: grey;">;</span> <span style="color: green;">-- Insira o CNPJ aqui<o:p></o:p></span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: green; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: blue; font-family: "Courier New"; font-size: 10.0pt; line-height: 107%; mso-font-kerning: 0pt; mso-no-proof: yes;">SELECT</span><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">STUFF</span><span lang="PT-BR" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">(</span><span lang="PT-BR" style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">STUFF</span><span lang="PT-BR" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">(</span><span lang="PT-BR" style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">STUFF</span><span lang="PT-BR" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">(</span><span lang="PT-BR" style="color: magenta; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">STUFF</span><span lang="PT-BR" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">(<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: grey; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">RIGHT(</span><span lang="PT-BR" style="color: red; font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">'00000000000000'</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10.0pt; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;"> <span style="color: grey;">+</span> @cnpj<span style="color: grey;">,</span>
14<span style="color: grey;">),</span> <span style="color: green;">-- Completa com
zeros à esquerda<o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10.0pt; line-height: 107%; mso-ansi-language: PT-BR; mso-font-kerning: 0pt; mso-no-proof: yes;">3<span style="color: grey;">,</span>
0<span style="color: grey;">,</span> <span style="color: red;">'.'</span><span style="color: grey;">),</span> 7<span style="color: grey;">,</span> 0<span style="color: grey;">,</span> <span style="color: red;">'.'</span><span style="color: grey;">),</span> 11<span style="color: grey;">,</span> 0<span style="color: grey;">,</span> <span style="color: red;">'/'</span><span style="color: grey;">),</span> 16<span style="color: grey;">,</span> 0<span style="color: grey;">,</span> <span style="color: red;">'-'</span><span style="color: grey;">) </span><span style="color: blue;">AS</span> CNPJformatado;</span><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Primeiro são acrescentados 14 zeros a esquerda e então
a função RIGHT é usada para pegar os últimos 14 dígitos do CNPJ, sendo assim,
não importa quantos números faltem, eles serão preenchidos com zeros. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">A função STUFF é aplicada em posições específicas para
inserir os pontos, a barra e o traço usados na formatação do CNPJ.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36.0pt;"><span lang="PT-BR" style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-ansi-language: PT-BR;">Pra este artigo é só, espero que ajude.<o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-82012911034564466302023-07-12T07:58:00.006-07:002023-07-26T09:29:12.610-07:00Juntando Strings JSON<p style="text-align: justify;"> <span> Nesse artigo vou mostrar um método que junta até 3 JSONs em um só, sendo que qualquer um deles pode vir vazio ou nulo. Esse método foi usado para uma integração onde recebia até 3 respostas e precisava tratá-las como uma na aplicação. </span></p><p style="text-align: justify;"><span style="font-family: courier; font-size: x-small;"><b><br /></b></span></p><p style="text-align: justify;"><span style="font-family: courier;"><b>private String montaJson(String json, String json2, String json3) {</b></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>if(json != null && !json.isEmpty()){</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>json = json.trim().substring(0, json.lastIndexOf("]"))+",";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>if(json2 != null && !json2.isEmpty()){</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>json += json2.trim().substring(1, json2.lastIndexOf("]"))+",";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>if(json3 != null && !json3.isEmpty()){</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>json += json3.trim().substring(1);</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>} else {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>json = json.trim().substring(0, json.lastIndexOf(","))+"]";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>}</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>} else if(json3 != null && !json3.isEmpty()) {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>json += json3.trim().substring(1, json3.lastIndexOf("]"));</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>} else {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span><span> </span></span>json = json.trim().substring(0, json.lastIndexOf(","))+"]";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>}</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>} else {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>if(json2 != null && !json2.isEmpty()){</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>json = json2.trim().substring(0, json2.lastIndexOf("]"))+",";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>if(json3 != null && !json3.isEmpty()) {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span><span> </span></span>json += json3.trim().substring(1);</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>} else {</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span><span> <span> </span><span> <span> </span></span></span></span>json = json.trim().substring(0, json.lastIndexOf(","))+"]";</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>}</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>} else if(json3 != null && !json3.isEmpty()){</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> <span> </span></span>json = json3.trim();</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>}</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>}</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b><span style="white-space: pre;"> </span>return json;</b></span></span></p><p style="text-align: justify;"><span style="white-space: normal;"><span style="font-family: courier;"><b>}</b></span></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-70793809665141772422023-05-31T16:49:00.000-07:002023-05-31T16:49:15.724-07:00Como criar uma requisição POST com Java<p style="text-align: justify;"> <span> </span><span style="font-family: helvetica;"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: windowtext; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;" xml:lang="PT-BR"><span class="NormalTextRun SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">Neste artigo vou mostrar como fazer um POST usando Java. Este código é valido para qualquer versão, mas no Java 1</span><span class="NormalTextRun SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;">1 introduziram uma nova forma de fazer que você pode estar vendo nesse link:</span></span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; color: windowtext; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text; white-space: pre-wrap;"> </span></span><span style="font-size: 17.3333px; text-align: left; white-space: pre-wrap;"><span style="font-family: helvetica;"><a href="http://olamundo-java.blogspot.com/2023/05/fazendo-requisicoes-com-http-client-do.html" target="_blank">Fazendo requisições com HTTP Client do Java 11</a></span></span></p><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{45066714-a5c0-4af6-8c51-4034ad09f37f}{97}" paraid="938492054" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;" xml:lang="PT-BR"><span style="font-family: helvetica;"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;" xml:lang="PT-BR"><span class="NormalTextRun SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;"> </span></span></p></div><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{45066714-a5c0-4af6-8c51-4034ad09f37f}{108}" paraid="1301977938" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;" xml:lang="PT-BR"><span style="font-family: helvetica;"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;" xml:lang="PT-BR"><span> </span><span> </span>Segue aqui o código:</span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;"> </span></span></p></div><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{45066714-a5c0-4af6-8c51-4034ad09f37f}{222}" paraid="1537153865" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;" xml:lang="PT-BR"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;" xml:lang="PT-BR"><span class="NormalTextRun SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{231f6633-c8a9-4f76-b0a8-cae8264c805c}{74}" paraid="1741714483" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline;" xml:lang="PT-BR"><span style="font-family: courier;"><span style="font-size: 17.3333px; white-space: pre-wrap;"><b><span style="color: #990000;">import</span> java.io.BufferedReader;
<span style="color: #990000;">import</span> java.io.DataOutputStream;
<span style="color: #990000;">import</span> java.io.InputStreamReader;
<span style="color: #990000;">import</span> java.net.HttpURLConnection;
<span style="color: #990000;">import</span> java.net.URL;
<span style="color: #990000;">public class</span> Java8Post {
<span style="color: #990000;">public static void main</span>(String[] args) <span style="color: #990000;">throws</span> Exception {
String url = <span style="color: #0b5394;">"https://exemplo.com/requisicao"</span>;
URL obj = <span style="color: #990000;">new</span> URL(url);
HttpURLConnection connection = (HttpURLConnection) obj.openConnection();
<span style="color: #6aa84f;">// Configurar a requisição como POST</span>
connection.setRequestMethod(<span style="color: #0b5394;">"POST"</span>);
<span style="color: #6aa84f;">// Adicionar cabeçalhos necessários</span>
connection.setRequestProperty(<span style="color: #0b5394;">"Content-Type", "application/json"</span>);
<span style="color: #6aa84f;">// Habilitar o envio de dados na requisição</span>
connection.setDoOutput(<span style="color: #990000;">true</span>);
String requestBody = <span style="color: #0b5394;">"{\"chave\": \"valor\"}"</span>;
<span style="color: #6aa84f;">// Enviar o corpo da requisição</span>
DataOutputStream outputStream = <span style="color: #990000;">new</span> DataOutputStream(connection.getOutputStream());
outputStream.writeBytes(requestBody);
outputStream.flush();
outputStream.close();
<span style="color: #6aa84f;">// Obter a resposta da requisição</span>
<span style="color: #990000;">int</span> responseCode = connection.getResponseCode();
System.out.println(<span style="color: #0b5394;">"Código de resposta: "</span> + responseCode);
BufferedReader reader = <span style="color: #990000;">new</span> BufferedReader(<span style="color: #990000;">new</span> InputStreamReader(connection.getInputStream()));
String inputLine;
StringBuffer response = <span style="color: #990000;">new</span> StringBuffer();
<span style="color: #990000;">while</span> ((inputLine = reader.readLine()) != <span style="color: #990000;">null</span>) {
response.append(inputLine);
}
reader.close();
System.out.println(<span style="color: #0b5394;">"Resposta: "</span> + response.toString());
}
}</b></span></span></p><div style="font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px;"><br /></div></div><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-family: "Segoe UI", "Segoe UI Web", Arial, Verdana, sans-serif; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{231f6633-c8a9-4f76-b0a8-cae8264c805c}{84}" paraid="395094260" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;" xml:lang="PT-BR"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;" xml:lang="PT-BR"><span class="NormalTextRun SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; margin: 0px; padding: 0px; user-select: text;"></span></span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div><div class="OutlineElement Ltr SCXW41528162 BCX8" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: white; clear: both; cursor: text; direction: ltr; font-size: 12px; margin: 0px; overflow: visible; padding: 0px; position: relative; user-select: text;"><p class="Paragraph SCXW41528162 BCX8" lang="PT-BR" paraeid="{45066714-a5c0-4af6-8c51-4034ad09f37f}{232}" paraid="845351973" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; background-color: transparent; color: windowtext; font-kerning: none; margin: 0px; overflow-wrap: break-word; padding: 0px; user-select: text; vertical-align: baseline; white-space: pre-wrap;" xml:lang="PT-BR"><span class="TextRun SCXW41528162 BCX8" data-contrast="auto" lang="PT-BR" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-size: 13pt; font-variant-ligatures: none !important; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;" xml:lang="PT-BR"><span style="font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif;"> </span><span style="font-family: helvetica;">Pra esse artigo é só.</span></span><span class="EOP SCXW41528162 BCX8" data-ccp-props="{"201341983":0,"335559739":160,"335559740":259}" style="-webkit-tap-highlight-color: transparent; -webkit-user-drag: none; font-family: Calibri, Calibri_EmbeddedFont, Calibri_MSFontService, sans-serif; font-size: 13pt; line-height: 23.7417px; margin: 0px; padding: 0px; user-select: text;"> </span></p></div>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-28661557784980198682023-05-24T19:34:00.006-07:002023-11-01T13:20:33.866-07:00Uso de transações e variáveis em SQL Server, Oracle e PostgreSQL<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Neste
artigo vou mostrar o uso de transação e de declaração de variável nos Bancos de
Dados mais utilizados: SQL Server, Oracle e PostgreSQL. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">As
vezes você pode por exemplo usar um SELECT pra retornar um ID e guardar ele em
uma variável para depois fazer várias ações com ele, e essas ações precisam ser
feitas por completo ou então você precisa desfazer o que foi executado
parcialmente. Nos exemplos a seguir, o trecho que executa o DELETE serve como exemplo para aonde as ações seriam colocadas.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Segue
o exemplo para <b>SQL Server</b>:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-size: 10pt;"><span style="font-family: courier;"><b>BEGIN
TRANSACTION;</b></span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><span style="color: black; font-size: 10pt; font-weight: bold;"><span style="mso-tab-count: 1;"> </span>DECLARE </span><span style="color: #646464; font-size: 10pt; font-weight: bold;">@</span><span style="color: black; font-size: 10pt;"><b>nomeVariavel
tipoVariavel; <span style="background-color: #fcff01;">(alguns tipos como CHAR e VARCHAR precisam do tamanho entre parenteses junto ao tipo : varchar(30))</span></b></span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><br /></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span> </span><span> </span>SELECT </span><span style="color: #646464; font-size: 10pt;">@</span><span style="color: black; font-size: 10pt;">nomeVariavel = coluna</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>FROM tabela </span><span style="font-size: 10pt;">WHERE condição;</span></b></span></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-size: 10pt;"><span style="font-family: courier;"><b><br /></b></span></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>DELETE FROM tabela</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>WHERE coluna = </span><span style="color: #646464; font-size: 10pt;">@</span><span style="color: black; font-size: 10pt;">nomeVariavel;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-size: 10pt;"><o:p><span style="font-family: courier;"><b> </b></span></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">IF </span><span style="color: #646464; font-size: 10pt;">@@</span><span style="color: black; font-size: 10pt;">ERROR <> 0</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>BEGIN</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span>ROLLBACK TRANSACTION;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>END</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">ELSE</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>BEGIN</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span>COMMIT TRANSACTION;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-size: 10pt; line-height: 107%;"><span style="font-family: courier;"><b> END</b></span></span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Segue
o exemplo para <b>Oracle</b>:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">DECLARE</span><span style="color: black; font-size: 10pt;">
nome_da_variavel datatype;</span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">BEGIN</span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">nome_da_variavel := valor;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10pt;"><o:p><span style="font-family: courier;"><b> </b></span></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">DELETE FROM tabela WHERE coluna = nome_da_variavel;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;">
</span></span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">BEGIN</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;">
</span></span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; margin-left: 35.4pt; margin-right: 0cm; margin-top: 0cm; margin: 0cm 0cm 0cm 35.4pt; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">EXCEPTION WHEN others
THEN</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> </span>ROLLBACK;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-tab-count: 1;"> </span>RAISE;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-spacerun: yes;">
</span></span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">END;</span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 35.4pt;"><span style="font-family: courier;"><b><span style="color: black; font-size: 10pt;">COMMIT;</span><span style="font-size: 10pt;"><o:p></o:p></span></b></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-size: 10pt;"><span style="font-family: courier;"><b>END;</b></span></span><span style="font-family: Consolas; font-size: 10pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">E
por fim, segue o exemplo para <b>PostgreSQL</b>:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">BEGIN;</span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">DECLARE
nome_da_variavel datatype;</span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">nome_da_variavel
:= valor;</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10pt;"><o:p><b><span style="font-family: courier;"> </span></b></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">DELETE FROM tabela
WHERE coluna = nome_da_variavel;</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-size: 10pt;"><o:p><b><span style="font-family: courier;"> </span></b></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">BEGIN</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>EXCEPTION WHEN others THEN</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>ROLLBACK;</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>RAISE;</span><span style="font-size: 10pt;"><o:p></o:p></span></span></b></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="font-family: courier;"><span style="color: black; font-size: 10pt;">END;</span></span></b></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-size: 10pt; line-height: 107%;"><b><span style="font-family: courier;">COMMIT;</span></b></span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Pra
esse artigo é isso, espero que ajude.<o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-72668972358279548882023-05-23T18:57:00.001-07:002024-03-28T05:56:04.439-07:00Fazendo requisições com HTTP Client do Java 11<p style="text-align: justify;"><span face="Helvetica, sans-serif" style="font-size: 14pt; text-align: justify; text-indent: 35.4pt;"><span> </span><span> </span>O
Java 11 introduziu uma API nativa para fazer chamadas HTTP, substituindo o
pacote </span><b style="font-family: Helvetica, sans-serif; font-size: 14pt; text-align: justify; text-indent: 35.4pt;">java.net.HttpURLConnection</b><span face="Helvetica, sans-serif" style="font-size: 14pt; text-align: justify; text-indent: 35.4pt;">. Isso facilitou o desenvolvimento de
aplicativos que consomem serviços da web. Essa nova API traz:</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="line-height: 107%;"><span face="Helvetica, sans-serif"><span style="font-size: 14pt;">1.</span></span><span style="font-size: xx-small;"> </span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Simplicidade de Uso</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">:
A nova API apresenta uma interface de programação mais simples e intuitiva em
comparação com o <b>HttpURLConnection</b>. Ela utiliza uma abordagem baseada em
métodos fluentes(Fluent Interface), que permitem o encadeamento das chamadas, facilitando
a construção de solicitações e o processamento de respostas.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">2.<span style="font: 7pt "Times New Roman";"> </span></span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Suporte Nativo a Requisições
Assíncronas</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">: A API oferece suporte nativo a chamadas
assíncronas, permitindo que você faça solicitações HTTP de forma não bloqueante
e aproveite os benefícios do processamento paralelo.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">3.<span style="font: 7pt "Times New Roman";"> </span></span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Manipulação de Cookies</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">: facilita
a manipulação de cookies em solicitações e respostas HTTP. Você pode facilmente
adicionar, remover ou ler cookies com métodos simples e diretos.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">4.<span style="font: 7pt "Times New Roman";"> </span></span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Tratamento de Redirecionamentos
Automáticos</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">: lida automaticamente com
redirecionamentos HTTP, seguindo as respostas de redirecionamento e fornecendo
a resposta final após a conclusão do redirecionamento.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">5.<span style="font: 7pt "Times New Roman";"> </span></span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Suporte a Protocolos Modernos</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">: oferece
suporte nativo a protocolos modernos como HTTP/2 e WebSocket, permitindo uma
comunicação mais eficiente e otimizada com servidores.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;"><span style="mso-list: Ignore;">6.<span style="font: 7pt "Times New Roman";"> </span></span></span><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Extensibilidade</span></b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">: é
projetada para ser extensível, permitindo que você adicione ou modifique facilmente
recursos e comportamentos.<o:p></o:p></span></p>
<p class="MsoNormal" style="margin-left: 36pt; text-align: justify;"><b><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></b></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 18pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Segue
um exemplo de uso do acesso ao endereço desse blog:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span> </span>private</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">static</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">void</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> lendoURLcomJava11() {</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">try</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> {</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span>HttpRequest </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">request</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = HttpRequest.<i>newBuilder</i>()</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 4;"> </span>.GET()</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-tab-count: 1;"> </span>.uri(URI.<i>create</i>(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"http://olamundo-java.blogspot.com"</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">))</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 4;"> </span>.build();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span>HttpClient </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpClient</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = HttpClient.<i>newHttpClient</i>();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span>HttpResponse<String> </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpClient</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.send(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">request</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">,
HttpResponse.BodyHandlers.<i>ofString</i>());</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-tab-count: 1;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">out</span></i></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.println(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.statusCode());</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span><span style="mso-tab-count: 1;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">out</span></i></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.println(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.body());</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span>}</span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">catch</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">
(Exception </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">e</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">) {</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">e</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.printStackTrace();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 2;"> </span>}</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Caso
queira por exemplo fazer um POST em uma API REST poderia fazer da seguinte
maneira:<o:p></o:p></span></span></p><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span> </span>private</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">static</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">void</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> fazendoPostParaRestApi() {</span><span style="font-size: 12pt;"> </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>HttpClient </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpClient</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = HttpClient.<i>newBuilder</i>()</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>.build();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f7f5f; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">// <u>Construindo</u> a URI <u>da</u> API REST</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>String </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">apiUrl</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"https://api.example.com/data"</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">;</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>URI </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">uri</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = URI.<i>create</i>(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">apiUrl</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">);</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f7f5f; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">// <u>Criando</u> o <u>corpo</u> <u>da</u> <u>solicitação</u> POST</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>String </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">requestBody</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"{\"name\":
\"Daniel\", \"Idade\": 34}"</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">;</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>HttpRequest </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpRequest</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = HttpRequest.<i>newBuilder</i>()</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>.uri(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">uri</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">)</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>.header(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"Content-Type"</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">, </span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"application/json"</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">)</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>.POST(BodyPublishers.<i>ofString</i>(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">requestBody</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">))</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>.build();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">try</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> {</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f7f5f; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">// <u>Enviando</u> a <u>solicitação</u></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>HttpResponse<String> </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpClient</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.send(</span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">httpRequest</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">,
HttpResponse.BodyHandlers.<i>ofString</i>());</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f7f5f; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">// <u>Obtendo</u> a <u>resposta</u></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">int</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">statusCode</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.statusCode();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>String </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">responseBody</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> = </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">response</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.body();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f7f5f; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">// <u>Exibindo</u> a <u>resposta</u></span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">out</span></i></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.println(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"Status
Code: "</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> + </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">statusCode</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">);</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">out</span></i></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.println(</span><span style="color: #2a00ff; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">"Response
Body: "</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"> + </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">responseBody</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">);</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>} </span><b><span style="color: #7f0055; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">catch</span></b><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">
(Exception </span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">e</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">) {</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #6a3e3e; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">e</span><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;">.printStackTrace();</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-spacerun: yes;"> </span>}</span><span style="font-family: Consolas; font-size: 12pt; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: Consolas; font-size: 12pt; line-height: 107%; mso-bidi-font-family: Consolas; mso-font-kerning: 0pt;"><span style="mso-tab-count: 1;"> </span>}</span><span face=""Helvetica",sans-serif" style="font-size: 12pt; line-height: 107%;"> <o:p></o:p></span></p><br /></span><p></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-70671290685141330822023-05-23T13:40:00.002-07:002023-05-23T13:40:40.225-07:00Gerando Webservice SOAP a partir de um WSDL com Apache CXF<p><span face="Helvetica, sans-serif" style="font-family: helvetica; font-size: 14pt; text-align: justify;"><span> </span>Nesse artigo vou mostrar como gerar um Webservice SOAP
a partir de um arquivo WSDL com a biblioteca Apache CXF.</span></p><p><span face="Helvetica, sans-serif" style="font-family: helvetica; font-size: 14pt; text-align: justify;"><br /></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span> </span>O CXF tem várias ferramentas, e uma delas é o WDLS to
Java (wsdl2java). Com esse carinha podemos executar um comando e ler um WSDL
gerando todas as classes Java necessárias.</span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span><br /></span></span></p><p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span> </span>O download pode ser feito em <a href="https://cxf.apache.org/download.html">https://cxf.apache.org/download.html</a>.
Baixe o zip e descompacte-o no C:</span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: helvetica; font-size: 14pt;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span> </span>Agora no <b>Path</b> nas variáveis de ambiente do Windows adicione
o caminho para a pasta bin da versão do CXF que baixou. Nesse caso, como usei a
3.1.4 ficaria:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="font-family: courier;"><b>C:\apache-cxf-3.1.4\bin</b></span><span style="font-family: helvetica;"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span> </span>Isso permite usar a ferramenta em qualquer lugar pela
linha de comando.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-family: helvetica; font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span> </span>O WSDL tem várias partes e pode ser usado tanto para
gerar o servidor quanto o cliente. São elas:</span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-size: 14pt;"><br /></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">1.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><b>Definições
(Definitions)</b>: Essa sessão é a raiz do documento WSDL e contém todas as
definições relacionadas ao serviço da Web. Ela define os namespaces utilizados,
bem como os tipos de dados e as mensagens que serão utilizadas.<o:p></o:p></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">2.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><b>Tipos
(Types)</b>: Nesta sessão, são definidos os tipos de dados utilizados pelos
serviços da Web. Geralmente, esses tipos são definidos usando XML Schema
Definition, que especifica a estrutura e as restrições dos dados ficando em um arquivo separado </span><span style="font-family: Helvetica, sans-serif; font-size: 18.6667px;">(XSD)</span><span style="font-family: Helvetica, sans-serif; font-size: 14pt; text-indent: -18pt;">. <b style="background-color: #fcff01;">Nesse caso é importante ter acesso aos 2 arquivos.</b></span><span style="font-family: Helvetica, sans-serif; font-size: 18.6667px;"> </span><span style="font-family: Helvetica, sans-serif; font-size: 18.6667px;">Quando isso ocorre, na sessão Types vai ter o endereço (schemaLocation) do XSD e pode ser necessário que você altere para o local onde colocou os arquivos<b>.</b></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">3.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><b>Mensagens
(Messages)</b>: Aqui são definidas as mensagens utilizadas pelos serviços da Web.
Uma mensagem é uma unidade lógica de dados que é trocada entre o cliente e o
serviço. Cada mensagem é composta por partes, onde cada parte tem um nome e um
tipo associado.<o:p></o:p></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">4.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><b>Porta
(Port)</b>: Esta sessão define os pontos de extremidade (endpoints) disponíveis
para acessar os serviços da Web. Um ponto de extremidade é uma combinação de um
endereço de rede e um contrato, que define a interface para acessar o serviço.<o:p></o:p></span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: justify; text-indent: -18pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">5.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><b>Vinculação
(Binding)</b>: Aqui são especificados os detalhes de vinculação para cada ponto de
extremidade definido. A vinculação define como as mensagens serão transmitidas
entre o cliente e o serviço, incluindo o protocolo de transporte utilizado (por
exemplo, SOAP sobre HTTP) e os formatos de codificação de dados.</span></p><p class="MsoNormal" style="margin-left: 36pt; text-align: left; text-indent: -18pt;"><span style="font-family: Helvetica, sans-serif; font-size: 14pt; text-align: justify;">6.<span> </span><b>Serviço (Service)</b>: Nesta
sessão, são definidos os serviços específicos oferecidos pelos pontos de
extremidade. Ela especifica os detalhes do serviço, como o nome, a localização
e as operações suportadas.</span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-size: 14pt;"> </span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span> </span>Uma vez com o CXF
configurado e o arquivo WSDL em mãos (e o XSD se for o caso), utilize o seguinte
comando para gerar as classes Java:<o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"> </span></p><p class="MsoNormal" style="text-align: left;"><span style="font-size: 14pt; line-height: 107%;"><span style="font-family: courier;">> <b>wsdl2java -d
<diretório_destino> -p <pacote_base>
<caminho_para_arquivo_wsdl></b></span><span style="font-family: Helvetica, sans-serif;"><o:p></o:p></span></span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span> </span></span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span> </span>Substitua <b><diretório_destino></b>
pelo diretório onde deseja que as classes Java sejam geradas, <b><pacote_base></b>
pelo pacote base que você deseja para as classes geradas (tipo: com.examplo.webservice)
e <b><caminho_para_arquivo_wsdl></b> pelo caminho completo do arquivo
WSDL que você deseja usar.</span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span> </span>As opções <b>-server</b>, <b>-client</b>
e <b>-impl</b> são usadas para gerar classes específicas relacionadas a
diferentes aspectos de um Webservice. Aqui está uma explicação de cada uma
dessas opções:<o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">1.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><!--[endif]--><b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">-server</span></b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">:
Essa opção é usada para gerar as classes do lado do servidor, ou seja, as
classes que implementam o serviço Web. Ao usar a opção <b>-server</b>, o <b>wsdl2java</b>
gerará classes que podem ser usadas para implementar as operações do serviço
definidas no WSDL. Essas classes geralmente contêm a lógica de negócios e a
implementação real dos métodos do serviço Web.<o:p></o:p></span></p><p class="MsoNormal" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">2.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">-client</span></b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">:
Essa opção é usada para gerar as classes do lado do cliente, ou seja, as
classes que são usadas para acessar e interagir com o serviço Web. Ao usar a
opção <b>-client</b>, o <b>wsdl2java</b> gerará classes que permitem ao cliente
chamar os métodos do serviço de forma conveniente. Essas classes geralmente
lidam com a comunicação de rede, envio e recebimento de mensagens SOAP, bem
como a tradução entre os objetos Java e o formato XML usado nas mensagens SOAP.<o:p></o:p></span></p><p class="MsoNormal" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"><!--[if !supportLists]--><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%; mso-bidi-font-family: Helvetica; mso-fareast-font-family: Helvetica;">3.<span style="font-family: "Times New Roman"; font-feature-settings: normal; font-kerning: auto; font-optical-sizing: auto; font-size: 7pt; font-stretch: normal; font-variant-alternates: normal; font-variant-east-asian: normal; font-variant-numeric: normal; font-variation-settings: normal; line-height: normal;"> </span></span><b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">-impl</span></b><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">:
Essa opção é usada para gerar as classes de implementação do serviço. Ela é
útil quando se deseja gerar somente as classes de implementação do serviço Web,
sem as classes do lado do cliente ou do lado do servidor. Essas classes de
implementação contêm a lógica de negócios e são responsáveis por processar as
solicitações recebidas do lado do cliente e retornar as respostas
correspondentes.</span></p><p class="MsoNormal" style="margin-left: 36.0pt; mso-list: l0 level1 lfo1; tab-stops: list 36.0pt; text-align: justify; text-indent: -18.0pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="text-align: justify;">
</p><p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span> </span>Pronto, com isso as classe
podem ser geradas da forma que atendam sua necessidade.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Fonte: </span></p><p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><a href="https://cxf.apache.org/">https://cxf.apache.org/</a><o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify;"><a href="https://cxf.apache.org/docs/wsdl-to-java.html">https://cxf.apache.org/docs/wsdl-to-java.html</a></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-87792451014019599162023-04-26T08:57:00.003-07:002023-04-26T08:57:58.887-07:00Usar número da linha como ID em um SELECT no SQL Server<p style="text-align: justify;"> <span> </span><span> Nesse artigo vou mostrar 2 maneiras de como usar o número da linha como ID trazendo ele na consulta. Isso é util quando queremos por exemplo usar um DTO (ou VO) em uma consulta com JPA mas na consulta não tem campos que são sempre únicos para servir de ID para o DTO e o JPA precisa de um ID único.</span></p><p style="text-align: justify;"> <span style="font-family: helvetica;">A primeira usamos o ROW_NUMBER e a segunda criamos uma SEQUENCE. Em "MEU_SELECT_COM_JOINS" você substitui por toda sua consulta que carrega os dados que você precisa para o DTO e pronto.</span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><br /></span></p><div class="line number35 index34 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">--------------------------------------------------</code></div><div class="line number36 index35 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">-- row_number(): SQL2005+</code></div><div class="line number37 index36 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">--------------------------------------------------</code></div><div class="line number38 index37 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">select</code></div><div class="line number39 index38 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql spaces" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"> </code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">row_number() over (</code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">order</code> <code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">by</code> <code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">(</code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">select</code> <code class="sql color1" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">null</code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">)) id,</code></div><div class="line number40 index39 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql spaces" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"> tabela_.</code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">*</code></div><div class="line number40 index39 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"><br /></code></div><div class="line number41 index40 alt2" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><span style="background-color: white !important; color: #666666;"><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">from</code> </span><span style="background-color: white !important;">(</span><b><i style="background-color: #ffe599;">MEU_SELECT_COM_JOINS</i></b><span style="background-color: white !important;">) as tabela_</span></div><div class="line number42 index41 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"> </div><div class="line number43 index42 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"> </div><div class="line number56 index55 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">--------------------------------------------------</code></div><div class="line number57 index56 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">-- Sequence: SQL2012+</code></div><div class="line number58 index57 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">--------------------------------------------------</code></div><div class="line number59 index58 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql comments" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 130, 0) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">-- Criando sequencia</code></div><div class="line number60 index59 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">if object_id(</code><code class="sql string" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: blue !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">'sLinhas'</code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">) </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">is</code> <code class="sql color1" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">not</code> <code class="sql color1" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: gray !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">null</code> <code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">drop</code> <code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">sequence</code> <code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">sLinhas</code></div><div class="line number61 index60 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">create</code> <code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">sequence</code> <code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">sLinhas </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">as</code> <code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">int</code> <code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">start </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">with</code> <code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">1</code></div><div class="line number62 index61 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"> </div><div class="line number63 index62 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">select</code></div><div class="line number64 index63 alt1" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql spaces" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"> </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">next</code><span style="color: #666666;"> </span><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">value </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">for</code><span style="color: #666666;"> </span><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">sLinhas </code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">as</code><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"><span style="color: #666666;"> id</span></code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">,</code></div><div class="line number65 index64 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql spaces" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"> tabela_.</code><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">*</code></div><div class="line number65 index64 alt2" style="background: none white !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql plain" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: black !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;"><br /></code></div><div class="line number66 index65 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><code class="sql keyword" style="background: none !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: rgb(0, 102, 153) !important; direction: ltr !important; display: inline !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace !important; font-size: 1em !important; font-weight: bold !important; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px !important; position: static !important; vertical-align: baseline !important; width: auto !important;">from</code><span style="background-color: white !important;"> (</span><b><i style="background-color: #ffe599;">MEU_SELECT_COM_JOINS</i></b><span style="background-color: white !important;">) as tabela_</span></div><div class="line number66 index65 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><span style="background-color: white !important;"><br /></span></div><div class="line number66 index65 alt1" style="background-attachment: initial !important; background-clip: initial !important; background-image: none !important; background-origin: initial !important; background-position: initial !important; background-repeat: initial !important; background-size: initial !important; border-radius: 0px !important; border: 0px !important; box-shadow: none !important; box-sizing: content-box !important; color: #666666; direction: ltr !important; float: none !important; font-family: Monaco, Consolas, "Bitstream Vera Sans Mono", "Courier New", Courier, monospace; font-size: 16px; height: auto !important; inset: auto !important; line-height: 1.1em !important; margin: 0px !important; outline: 0px !important; overflow: visible !important; padding: 0px 0px 0px 0em !important; position: static !important; vertical-align: baseline !important; white-space: pre !important; width: auto !important;"><span style="background-color: white !important;"><br /></span></div>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-19638381585276681522023-03-14T07:55:00.006-07:002023-03-14T08:16:43.162-07:00Alterando encoding de arquivos no Linux<p><span style="font-family: helvetica;"> As vezes precisamos mudar o Encoding de um arquivo para corrigir os caracteres estranhos.</span></p><p><span style="font-family: helvetica;"><br /></span></p><p><span style="font-family: helvetica;">Para descobrir a codificação de origem pode-se usar a ferramenta file, exemplo:</span></p><p><span style="font-family: helvetica;"><br /></span></p><p><span style="font-family: courier;"><b>$ file [nome_arquivo]</b></span></p><p><span style="font-family: helvetica;"><br /></span></p><p><span style="font-family: helvetica;">Exemplo de conversão de ISO-8859-1 para UTF-8:</span></p><p><span style="font-family: helvetica;"><br /></span></p><p><b><span style="font-family: courier;">$ iconv -f iso-8859-1 -t utf-8 arquivo.txt > arquivo_novo.txt</span></b></p><p><span style="font-family: helvetica;"><br /></span></p><p style="text-align: justify;"><span style="font-family: helvetica;">Uma dica importante é criar um novo arquivo pra saída, pois assim você não perde seus dados... <b style="background-color: #fcff01;">(ele apaga mesmo!)</b> Crie um novo arquivo, verifique se está tudo certo e somente depois sobrescreva o arquivo original.</span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-59292935164131229422023-03-13T12:03:00.002-07:002023-03-13T12:03:52.222-07:00Alternando entre versões do Java no Linux<p><span style="font-family: helvetica;"><span> </span><span> </span>Nesse artigo vou mostrar como mudar da versão do Java em um servidor Linux. Essa mudança altera a versão padrão em uso pelo servidor, embora aplicações possam apontar diretamente para uma versão ao invés de usar a versão padrão definida para o servidor.</span></p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><span style="text-align: left;"><span style="font-family: courier;"><b>$ sudo update-alternatives --config java</b></span></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><br /></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"> Irá aparecer a lista de versões disponíveis e você pode digitar o número correspondente a versão desejada e depois confirmar com <b>Enter.</b></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><b><br /></b></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><b></b></span></p><div class="separator" style="clear: both; text-align: center;"><b><a href="https://blogger.googleusercontent.com/img/a/AVvXsEjFQoIGeuV5PC8_mqZss-RfYkAbz-_rH2eXXwkZVk-VuBDGLcs5EnyCnDfHirVqs_cB-T4cOfeDK-5JLP-21iQYz7yS1l8uJ6mysoFB6ItfNyD4ERblnVjayWT_BZhlcDyKIpac5Nfahz8mOyq6wbTKd580xBnR7yplxFmCxdllxR6lwS9T6NXr9O4A" style="margin-left: 1em; margin-right: 1em;"><img alt="" data-original-height="228" data-original-width="816" height="178" src="https://blogger.googleusercontent.com/img/a/AVvXsEjFQoIGeuV5PC8_mqZss-RfYkAbz-_rH2eXXwkZVk-VuBDGLcs5EnyCnDfHirVqs_cB-T4cOfeDK-5JLP-21iQYz7yS1l8uJ6mysoFB6ItfNyD4ERblnVjayWT_BZhlcDyKIpac5Nfahz8mOyq6wbTKd580xBnR7yplxFmCxdllxR6lwS9T6NXr9O4A=w640-h178" width="640" /></a></b></div><b><br /><br /></b><p></p><p style="text-align: justify;"><span style="font-family: helvetica;"> </span><span style="font-family: helvetica;"> </span><span style="font-family: helvetica;">Este comando também é útil para ver onde as versões foram instaladas no servidor, porque ele mostra o caminho completo. Importante lembrar que algumas versões que possam ter sido baixadas e descompactadas não irão aparecer.</span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><br /></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><br /></span></p><p style="text-align: justify;"><span style="font-family: helvetica;"><br /></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-8545091764064323712023-03-06T18:55:00.003-08:002023-03-06T18:57:23.292-08:00Particionando, Formatando e Montando discos no Linux<p> </p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Nesse artigo
vamos mostrar como montar um disco no Linux. Ao adicionar um novo disco, físico
ou lógico dependendo do ambiente, é necessário adicioná-lo ao sistema. Esse
processo é chamado de montagem.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Para
vermos os discos disponíveis podemos usar o comando lsblk:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;"><b>$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">sudo lsblk</span></code></b><o:p></o:p></span></pre>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Antes de
montar é necessário particionar e formatar o disco. Os discos seguem uma ordem
alfabética: </span><code><span face=""Helvetica",sans-serif" style="border: 1pt none windowtext; color: #24292f; font-size: 14pt; line-height: 107%; mso-border-alt: none windowtext 0cm; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; padding: 0cm;">sd<b><i>a</i></b> (principal), sd<b><i>b </i></b>(segundo), sd<b><i>c
</i></b>(terceiro)... e assim por diante. Vamos seguir como se fosse o segundo
disco. Primeiro vamos particionar:</span></code><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;"><b>$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">fdisk /dev/sdb</span></code></b><span style="border: 1pt none windowtext; mso-border-alt: none windowtext 0cm; padding: 0cm;"><o:p></o:p></span></span></pre>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Então o
fdisk vai pedir algumas opções para poder particionar o disco e oferecer a
opção <b>“m”</b> para ajuda. Para particionar como uma única partição primária
de dados você pode fornecer a opção <b>“n” e depois escolher “p” para a
primária. </b>Depois siga o prompt confirmando o número de partições (que é 1) e
o início e fim dela. Após receber a mensagem que a partição foi criada, digite <b>“w”
</b>para confirmar as alterações no disco. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Para
formatar digite:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas;"><b>$ </b></span><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; line-height: 107%; padding: 0cm;"><b>mkfs.ext4 /dev/sdb</b><span style="font-size: 10pt;"><o:p></o:p></span></span></code></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Caso
queira uma partição onde o Windows possa enxergar também use NTFS.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Agora
vamos à montagem do disco para uso. As montagens podem ser feitas em qualquer pasta
do sistema, porém existe um diretório padrão para isso que o <b>/mnt.</b><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Vamos imaginar
que vamos montá-lo na pasta chamada “arquivos”. Primeiro criamos a pasta:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;"><b>$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">mkdir /mnt/arquivos</span></code></b><o:p></o:p></span></pre>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><span style="mso-spacerun: yes;"> </span><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Agora
fazemos a montagem apontando o disco para a pasta:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;"><b>$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">mount /dev/sdb /mnt/arquivos</span></code></b><o:p></o:p></span></pre>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Dessa
maneira o disco está montado e disponível, a menos que o sistema seja
reiniciado. Para manter o disco montado sempre que o sistema ligar ainda é
necessário automatizar essa montagem. Abra o arquivo <b>fstab</b> que fica no <b>etc
</b>e<b> </b>acrescente a seguinte linha<b> </b>informando o<b> disco, pra onde
vai </b>e o <b>sistema de arquivos, </b>além do padrão<b> “defaults 0 0”:<o:p></o:p></b></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;"><b>$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">/dev/sdb /mnt/arquivos ext4 defaults 0 0</span></code></b><o:p></o:p></span></pre>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;">Agora é
só salvar o arquivo e ele sempre será montado ao iniciar o sistema.<o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%; mso-bidi-font-family: "Times New Roman"; mso-bidi-theme-font: minor-bidi;"><br /></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-34324728088645915882023-02-04T12:09:00.002-08:002024-03-19T05:47:56.537-07:00Instalando o Docker no Windows usando WSL 2 e Ubuntu<p> <span face="Helvetica, sans-serif" style="font-size: 14pt; text-align: justify; text-indent: 35.4pt;">Nesse
artigo vamos configurar o Docker pra rodar no Ubuntu através do WSL 2 de forma
nativa (como se a máquina fosse Linux puro). Caso não tenha o WSL 2 configurado
veja aqui como fazer: <a href="http://olamundo-java.blogspot.com/2023/02/configurando-o-wsl-2-no-windows-10.html" target="_blank">Configuração WSL 2</a></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Agora vamos ao Docker! O
primeiro passo é atualizar a biblioteca do Ubuntu de gerenciamento de programas:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> Obs: Para versão 22-4 do Ubuntu ver <a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-22-04">aqui.</a> </o:p></span></p><p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas;"><br /></span></p><p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas;">$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">sudo apt update && sudo apt upgrade</span></code><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Depois
instalar as dependências como Http, certificados, acesso a URLs, etc...<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;"><o:p> </o:p></span></p>
<pre><span style="color: #24292f; font-family: Consolas;">$ <code><span style="border: 1pt none windowtext; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;">sudo apt-get install \<o:p></o:p></span></code></span></pre><pre><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;"><span style="mso-spacerun: yes;"> </span>apt-transport-https \<o:p></o:p></span></code></pre><pre><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;"><span style="mso-spacerun: yes;"> </span>ca-certificates \<o:p></o:p></span></code></pre><pre><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;"><span style="mso-spacerun: yes;"> </span>curl \<o:p></o:p></span></code></pre><pre><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;"><span style="mso-spacerun: yes;"> </span>gnupg \<o:p></o:p></span></code></pre><pre><code><span style="border: 1pt none windowtext; color: #24292f; font-family: Consolas; mso-border-alt: none windowtext 0cm; padding: 0cm;"><span style="mso-spacerun: yes;"> </span>lsb-release</span></code><span style="color: #24292f; font-family: Consolas;"><o:p></o:p></span></pre>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Agora
adicionar o repositório Docker na biblioteca do Ubuntu:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
mkdir -p /etc/apt/keyrings<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ curl
-fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o
/etc/apt/keyrings/docker.gpg</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Agora
para configurar o repositório:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ echo \<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;"><span style="mso-spacerun: yes;">
</span>"deb [arch=$(dpkg --print-architecture)
signed-by=/etc/apt/keyrings/docker.gpg]
https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) stable" |
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Vamos
mais uma vez atualizar a biblioteca:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
apt-get update<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Agora
sim vamos instalar o Docker. Para a instalar a última versão usamos:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Para
instalar uma versão específica primeiro listamos as versões:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ apt-cache
madison docker-ce | awk '{ print $3 }'</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">E
então instalamos a que desejamos. Ex:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ VERSION_STRING=5:20.10.13~3-0~ubuntu-jammy<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
apt-get install docker-ce=$VERSION_STRING docker-ce-cli=$VERSION_STRING
containerd.io docker-compose-plugin</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">É
preciso também dar permissão a pasta criada. A instalação do Docker já espera
que haja um grupo chamado "docker". Veja com o comando "groups"
se esse grupo "docker" já existe, caso não tenha sido criado, siga as
duas linhas abaixo, caso tenha sido criado, apenas adicione seu usuário a ele.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
groupadd Docker<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
usermod -aG docker $USER</span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Pronto,
agora é só fazer logoff e login ou fechar o app do Ubuntu e abrir novamente para
poder usar o docker. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><b style="background-color: #fcff01;">Atenção!</b>
Em alguns casos ao sair e entrar no App do Ubuntu (e outras distribuições) ele
desliga o serviço do Docker. Caso isso aconteça pode ser resolvido da seguinte
maneira:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
systemctl enable docker.service<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; line-height: 107%; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">$ sudo
systemctl enable containerd.service </span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Isso
adiciona o serviço do Docker ao Systemd que gerencia serviços que inicializam
automaticamente. Caso queira remover basta usar o "disable" ao invés
do "enable".<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Fonte: <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><a href="https://docs.docker.com/engine/install/ubuntu/">https://docs.docker.com/engine/install/ubuntu/</a>
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><a href="https://docs.docker.com/engine/install/linux-postinstall/">https://docs.docker.com/engine/install/linux-postinstall/</a>
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><a href="https://github.com/codeedu/wsl2-docker-quickstart#instala%C3%A7%C3%A3o-do-wsl-2">https://github.com/codeedu/wsl2-docker-quickstart#instala%C3%A7%C3%A3o-do-wsl-2</a>
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-81185092674704858432023-02-04T09:06:00.002-08:002023-02-04T11:01:46.258-08:00Configurando o WSL 2 no Windows 10 - (Linux no Windows)<p> <span> </span><span> </span><span> </span><span face="Helvetica, sans-serif" style="font-size: 14pt; text-align: justify; text-indent: 35.4pt;">Nesse
artigo vou mostrar como configurar o WSL 2 no Windows para podermos usar uma
distribuição Linux como se estivéssemos rodando ela direto sobre o hardware sem
o Windows.</span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Abra
o PowerShell em modo administrador e execute os comandos para habilitar o WSL 2:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">>
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux
/all /norestart<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span style="color: #24292f; font-family: Consolas; font-size: 10pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">>
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all
/norestart <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Teste
o comando wsl, se não funcionar é preciso reiniciar o computador. Funcionando,
baixe e instale o kernel do WSL no endereço: </span><span face=""Segoe UI",sans-serif" style="background: white; color: #24292f;"> </span><a href="https://docs.microsoft.com/pt-br/windows/wsl/wsl2-kernel" style="-webkit-text-stroke-width: 0px; box-sizing: border-box; color: var(--color-accent-fg); font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; widows: 2; word-spacing: 0px;"><span face=""Segoe UI",sans-serif" style="background: white; text-decoration: none; text-underline: none;">https://docs.microsoft.com/pt-br/windows/wsl/wsl2-kernel</span></a><span face=""Segoe UI",sans-serif" style="background: white; color: #24292f;"><span style="-webkit-text-stroke-width: 0px; float: none; font-variant-caps: normal; font-variant-ligatures: normal; orphans: 2; text-align: start; text-decoration-color: initial; text-decoration-style: initial; text-decoration-thickness: initial; widows: 2; word-spacing: 0px;"> </span></span><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Agora
mude a versão do WSL para a 2:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; tab-stops: 45.8pt 91.6pt 137.4pt 183.2pt 229.0pt 274.8pt 320.6pt 366.4pt 412.2pt 458.0pt 503.8pt 549.6pt 595.4pt 641.2pt 687.0pt 732.8pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt;">> </span><span style="color: #24292f; font-family: Consolas; font-size: 10pt; mso-bidi-font-family: "Courier New"; mso-fareast-font-family: "Times New Roman"; mso-fareast-language: PT-BR;">wsl
--set-default-version 2<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span><span face="Helvetica, sans-serif" style="font-size: 14pt; text-indent: 35.4pt;"> </span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Pronto,
<b style="background-color: #fcff01;">agora na Windows Store você escolhe a distribuição que você quer e clica em
instalar.</b> <b>Geralmente a mais usada é o <span style="background-color: red;">Ubuntu</span>, mas fica a seu critério. </b>No processo de instalação ou primeiro acesso vai ser pedido para você
fornecer um nome de usuário e senha para o S.O do Linux. Você pode fornecer os
mesmos que usa no Windows ou outro.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Fonte: <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><a href="https://learn.microsoft.com/pt-br/windows/wsl/">https://learn.microsoft.com/pt-br/windows/wsl/</a>
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><a href="https://github.com/codeedu/wsl2-docker-quickstart#instala%C3%A7%C3%A3o-do-wsl-2">https://github.com/codeedu/wsl2-docker-quickstart#instala%C3%A7%C3%A3o-do-wsl-2</a>
<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-84696424267744720412023-01-10T13:15:00.005-08:002023-01-19T04:56:45.563-08:00Java AES/CBC criptografia e descriptografia<p> </p><p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Nesse artigo vou mostrar como criptografar e
descriptografar um texto usando criptografia bidirecional assimétrica, ou seja,
de chave única e privada. Esse tipo de criptografia é útil por exemplo para
enviar uma URL de recuperação de senha para um usuário ou mesmo proteger o
token de acesso.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Vamos usar o algoritmo AES (Advanced Encryption
Standard) que possui algumas variações, da qual vamos usar o CBC - Cipher Block
Chaining (Encadeamento de blocos cifrados). O modo CBC usa um vetor de
inicialização (IV) para aumentar a criptografia. Primeiro, o CBC usa o bloco de
texto simples XOR com o IV. Em seguida, ele criptografa o resultado para o
bloco de texto cifrado. No próximo bloco, ele usa o resultado da criptografia
para XOR com o bloco de texto simples até o último bloco. Uma das principais
características do CBC é que ele usa um processo de encadeamento que faz com
que a descriptografia de um bloco de texto cifrado dependa de todos os blocos
de texto cifrado anteriores.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">*XOR = </span><span face=""Arial",sans-serif" lang="PT-BR" style="background: white; color: #4d5156; font-size: 10.5pt; line-height: 107%; mso-ansi-language: PT-BR;">Ou exclusivo ou disjunção exclusiva é um mecanismo de
codificação usado para combinar diferentes entradas.</span><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Vamos aos códigos. Serão 2 classes e um Teste Unitário
para garantirmos que tudo está certo.<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> java.security.spec.KeySpec;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.Cipher;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.SecretKey;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.SecretKeyFactory;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.spec.IvParameterSpec;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.spec.PBEKeySpec;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">import</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> javax.crypto.spec.SecretKeySpec;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;">/**</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>* Advanced Encryption
Standard ( AES ) </span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>* </span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>* </span><b><span style="color: #7f9fbf; font-family: "Courier New"; font-size: 10pt;">@author</span></b><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;"> Daniel O<u>liveira</u></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">*</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-tab-count: 1;"> </span>IV =
Initialization Vector ou Vetor de inicialização</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-tab-count: 1;"> </span>é uma
entrada para uma primitiva criptográfica sendo
usada para fornecer</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>o estado
inicial. O IV geralmente precisa ser aleatório
ou pseudo </span><span lang="PT-BR" style="color: #7f7f9f; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">-</span><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">aleatório</span><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">, </span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>mas
às vezes um IV só precisa ser imprevisível
ou único.</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span></span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>o AES
tem um tamanho de bloco de 128 bits ou
16 bytes. O AES não altera o </span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>tamanho,
e o tamanho do texto cifrado é igual ao tamanho
do texto não </span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>criptografado.
Além disso, nos modos ECB e CBC, devemos usar
um algoritmo </span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span>*<span style="mso-spacerun: yes;"> </span>de
preenchimento como PKCS 5. Portanto, o tamanho dos
dados após a criptografia é: 256</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span></span><span style="color: #3f5fbf; font-family: "Courier New"; font-size: 10pt;">*/</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">class</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> SymmetricCripto {</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">AES</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"AES"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">int</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ITERATION_COUNT</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = 65536;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">int</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">KEY_LENGTH</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = 256;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ALGORIHM</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"AES/CBC/PKCS5Padding"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">SECRET_KEY_FACTORY_INSTANCE</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"PBKDF2WithHmacSHA256"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ENCODING</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"UTF-8"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 36pt;"><span lang="PT-BR" style="color: #3f7f5f; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">// crie seu IV com 16 Bytes.</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span lang="PT-BR" style="color: black; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">IV</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"8P7A6S5S4W3O2R1D"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] cripto(String
</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">password</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> )<span style="mso-spacerun: yes;"> </span>{</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">try</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> <i>cripto</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">password</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.getBytes(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ENCODING</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">));</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>} </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">catch</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> (Exception </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.printStackTrace();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[0];</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[]
cripto(SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> )<span style="mso-spacerun: yes;"> </span>{</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">try</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span>Cipher </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Cipher.<i>getInstance</i>(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ALGORIHM</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.init(Cipher.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ENCRYPT_MODE</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, <i>generateIv</i>());</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.doFinal(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>} </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">catch</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> (Exception </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.printStackTrace();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[0];</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[]
descripto(SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> )<span style="mso-spacerun: yes;"> </span>{</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">try</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">{</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span>Cipher </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Cipher.<i>getInstance</i>(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ALGORIHM</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.init(Cipher.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">DECRYPT_MODE</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, <i>generateIv</i>());</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">cipher</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.doFinal(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">text</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>} </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">catch</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> (Exception </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">exception</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.printStackTrace();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[0];</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> SecretKey
getSecretKey(String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">password</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">salt</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">){</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secret</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">null</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">try</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span>SecretKeyFactory
</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">factory</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> =
SecretKeyFactory.<i>getInstance</i>(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">SECRET_KEY_FACTORY_INSTANCE</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span>KeySpec </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">keySpec</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> PBEKeySpec(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">password</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.toCharArray(), </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">salt</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.getBytes(), </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">ITERATION_COUNT</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">KEY_LENGTH</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secret</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> SecretKeySpec(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">factory</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.generateSecret(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">keySpec</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">)</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span><span style="mso-spacerun: yes;"> </span>.getEncoded(), </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">AES</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>} </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">catch</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> (Exception </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">e</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 3;"> </span></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">e</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.printStackTrace();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-spacerun: yes;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secret</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> IvParameterSpec
generateIv() {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">iv</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">IV</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.getBytes();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">
IvParameterSpec(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">iv</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-spacerun: yes;"> </span>}</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;">}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">class</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> Util {</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">SALT</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"12345678"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none; text-indent: 36pt;"><span lang="PT-BR" style="color: #3f7f5f; font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;">// crie seu PASSWORD com 16 Bytes.</span><span lang="PT-BR" style="font-family: "Courier New"; font-size: 10pt; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">private</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">
</span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">final</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">
String </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">PASSWORD </span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">= </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">"P1A2S3S4W5O6R7D8"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">;<o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String
createToken(String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">username</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>Timestamp </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">currentTimeStamp</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">new</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">
Timestamp(Calendar.<i>getInstance</i>().getTime().getTime());</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">username</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> + </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"_"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> + </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">currentTimeStamp</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.toString();</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String
encodeToken(String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> =
SymmetricCripto.<i>getSecretKey</i>(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">PASSWORD</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">SALT</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">criptografado</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> =
SymmetricCripto.<i>cripto</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Courier New;"><span style="font-size: 13.3333px;"><span> </span><span> </span><span> </span><span style="color: #741b47;"><b>return</b></span> Base64.getUrlEncoder().encodeToString(criptografado);</span></span><span style="font-family: "Courier New"; font-size: 10pt;"> </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">static</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> String
decodeToken(String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">byte</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">[] </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">decodedBytes</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Base64.<i>decode</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.getBytes());</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>SecretKey </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">secretKey</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> =
SymmetricCripto.<i>getSecretKey</i>(</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">PASSWORD</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">, </span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">SALT</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p><p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: Courier New; font-size: 13.3333px;"><span> </span><span> </span><span> </span>token = <b><span style="color: #741b47;">new</span></b> String(SymmetricCripto.descripto(secretKey, decodedBytes), Charset.forName("UTF-8"));</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">return</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">}</span><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-tab-count: 1;"> </span>E agora
para testar a criptografia vamos ver a classe de teste:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">class</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> UtilTeste {</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "Courier New"; font-size: 10pt;">@Test</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">void</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">
criptografaTokenTest() {</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>createToken</i>(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"Daniel"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>encodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>decodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> <span> </span></span>Assert.<i>assertTrue</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.equals(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">));</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "Courier New"; font-size: 10pt;">@Test</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">void</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">
criptografaTokenTest2() {</span><span style="font-family: "Courier New"; font-size: 10pt;"> </span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>createToken</i>(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"Daniel"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>createToken</i>(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"Gadiel"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>encodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>encodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>decodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>decodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span><span style="mso-tab-count: 1;"> <span> </span></span>Assert.<i>assertTrue</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.equals(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) && </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.equals(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">));</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><span style="color: #646464; font-family: "Courier New"; font-size: 10pt;">@Test</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span></span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">public</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> </span><b><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt;">void</span></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">
criptografaTokenTest3() {</span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"Daniel_2023-01-10
18:58:09.642"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"Gadiel_2023-01-10
18:58:09.642"</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">;</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>encodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>encodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">token2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>decodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>String </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;"> = Util.<i>decodeToken</i>(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 2;"> </span>System.</span><b><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt;">out</span></i></b><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.println(</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenDescriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">);</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="font-family: "Courier New"; font-size: 10pt;"><o:p> </o:p></span></p><div style="line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span> </span><span> </span><span> </span>Assert.<i>assertTrue</i>(<br /></span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado1</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.equals(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"KOlEIFpg8oWmgIPQlwIZ9Ibaz4DU0Fq3Fx7ZWHwmLKw="</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">) </span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">&&
</span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">tokenCriptografado2</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">.equals(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt;">"7NzCr0fzeSNy9X2Ib+mjuFPY3EmTM03gpThBW5q6A3o="</span><span style="color: black; font-family: "Courier New"; font-size: 10pt;">));</span></div>
<p class="MsoNormal" style="line-height: normal; margin-bottom: 0cm; mso-layout-grid-align: none; text-autospace: none;"><span style="color: black; font-family: "Courier New"; font-size: 10pt;"><span style="mso-tab-count: 1;"> </span>}</span><span style="font-family: "Courier New"; font-size: 10pt;"><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="color: black; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">}<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Importante: Para se ter sempre o mesmo resultado de
criptografia e descriptografia para valores iguais após a reinicialização do
servidor ou em servidores diferentes (para quem usa cluster ou coisa do tipo) o
PassWord que gera a SecretKey e o IV devem ser criados com o mesmo valor
sempre. Note que eles são constantes no código. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Dica: O token pode (e deve) ser melhorado com o acréscimo
de um número randômico e mais dados de acordo com a necessidade. O PassWord e o IV também devem ser alterados de tempos em tempos.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Solução adaptada à necessidade que tive a partir das
seguintes fontes:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><a href="https://www.devmedia.com.br/introducao-a-seguranca-da-informacao-em-java/28247">https://www.devmedia.com.br/introducao-a-seguranca-da-informacao-em-java/28247</a><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><a href="https://www.baeldung.com/java-aes-encryption-decryption">https://www.baeldung.com/java-aes-encryption-decryption</a><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><a href="https://www.techtarget.com/searchsecurity/definition/cipher-block-chaining">https://www.techtarget.com/searchsecurity/definition/cipher-block-chaining</a><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><a href="https://stackoverflow.com/questions/54874072/aes-encryption-in-node-resulting-is-different-output-compared-to-java">https://stackoverflow.com/questions/54874072/aes-encryption-in-node-resulting-is-different-output-compared-to-java</a><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-30815688083286163452022-11-03T12:33:00.003-07:002022-11-03T12:41:17.182-07:00Pegando um arquivo de uma URL com Java usando Proxy<p style="text-align: justify;"> <span style="text-align: justify;"> </span><span style="text-align: justify;"> <span style="font-size: large;"> As vezes nem tudo é tão simples. No artigo anterior eu mostrei como pegar um arquivo com Java a partir de uma URL, porém na maioria das empresas para se ter acesso a internet é preciso usar um <b>proxy </b>devido a configurações de segurança e tal. Então para acessar arquivos de URLs sem usar proxy provavelmente só vai rolar se for de URLs internas da empresa. Mas calma, usar o proxy muda pouca coisa no nosso código e vou seguir com os mesmos exemplos. Como no artigo anterior isso pode ser aplicado a um PDF, uma imagem, etc. Vou mostrar uma forma apenas com Java puro e outra que usa o </span></span><span style="font-size: large;"><b style="text-align: justify;">org.apache.commons.io.IOUtils </b><span style="text-align: justify;">para copiar do InputStream para o OutputStream.</span></span></p><p style="text-align: justify;"><span style="font-size: large;"> No problema em questão a necessidade original era buscar um arquivo e retorná-lo em memória para um método que irá guardá-lo no banco de dados.<br /></span></p><p style="text-align: justify;"><span style="font-size: large;"> Segue o exemplo de código apenas com o Java puro:</span></p><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="color: #7f0055; font-size: 10pt;">try</span><span style="font-size: 10pt;"> {<br /></span><span style="font-size: 10pt;"> URL </span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> URL(</span><span style="color: #2a00ff; font-size: 10pt;">"http://www.pdf995.com/samples/pdf.pdf"</span><span style="font-size: 10pt;">);</span></b></span></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><span> </span></span></b></span></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><span><span> </span></span></span></b></span><b style="font-family: courier;"><span style="background-color: #fcff01; color: #3f7f5f; font-size: 10pt;">//cria o proxy com ip e porta do proxy</span></b></div><div style="line-height: normal; margin-bottom: 0cm;"><b style="background-color: #fcff01;"><span style="font-family: "Courier New"; font-size: 10pt;"><span> </span>URLConnection </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">openConnection</span><span style="font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">url</span><span style="font-family: "Courier New"; font-size: 10pt;">.openConnection(</span><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">new</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 107%;">
Proxy(Proxy.Type.</span><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">HTTP</span></i><span style="font-family: "Courier New"; font-size: 10pt; line-height: 107%;">,
</span><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">new</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 107%;"> InetSocketAddress(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt; line-height: 107%;">"ip_do_proxy"</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 107%;">,
8080)));</span></b><span style="font-family: "Courier New"; font-size: 10pt;"><br /></span><span style="font-family: courier;"><b><span style="font-size: 10pt;"> </span></b></span></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><span> </span></span></b></span><b style="font-family: courier;"><span style="color: #3f7f5f; font-size: 10pt;">/</span></b><b style="font-family: courier;"><span style="color: #3f7f5f; font-size: 10pt;">/ muda a chamado do stream</span></b></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><span> </span>InputStream </span><span style="color: #0000c0; font-size: 10pt;">in</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> BufferedInputStream(<span style="background-color: #fcff01; color: #0000c0;">openConnection</span></span><span style="font-size: 10pt;"><span style="background-color: #fcff01;">.getInputStream()</span>);<br /></span><span style="font-size: 10pt;"> ByteArrayOutputStream </span><span style="color: #0000c0; font-size: 10pt;">out</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> ByteArrayOutputStream();<br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">byte</span><span style="font-size: 10pt;">[] </span><span style="color: #0000c0; font-size: 10pt;">buf</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">byte</span><span style="font-size: 10pt;">[121072]; </span><span style="color: #3f7f5f; font-size: 10pt;">//quantidade de bytes lida por vez<br /></span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">int</span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">i</span><span style="font-size: 10pt;"> = 0;<br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">while</span><span style="font-size: 10pt;"> (-1 != (i = in.read(buf))){<br /></span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">out</span><span style="font-size: 10pt;">.write(</span><span style="color: #0000c0; font-size: 10pt;">buf</span><span style="font-size: 10pt;">, 0, </span><span style="color: #0000c0; font-size: 10pt;">i</span><span style="font-size: 10pt;">);<br /></span><span style="font-size: 10pt;"> }<br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;"> out.close();<br /></span><span style="font-size: 10pt;"> </span><span lang="PT-BR" style="font-size: 10pt;">in.close();<br /></span><span lang="PT-BR" style="font-size: 10pt;"> <br /></span><span lang="PT-BR" style="font-size: 10pt;"> </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">byte</span><span lang="PT-BR" style="font-size: 10pt;">[] </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">dadosRecebidos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">out</span><span lang="PT-BR" style="font-size: 10pt;">.toByteArray();<br /></span><span lang="PT-BR" style="font-size: 10pt;"> <br /></span><span lang="PT-BR" style="font-size: 10pt;"> File </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;"> = File.<i>createTempFile</i>(</span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">"nomedoc"</span><span lang="PT-BR" style="font-size: 10pt;">, </span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">".pdf"</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//cria arquivo temporário<br /></span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">fos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">new</span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream(</span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// passa o arquivo para o fos<br /></span><span lang="PT-BR" style="font-size: 10pt;"> fos.write(dadosRecebidos); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//escreve os dados no arquivo criado<br /></span><span lang="PT-BR" style="font-size: 10pt;"> </span><span style="font-size: 10pt;">fos.close();<br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">return</span><span style="font-size: 10pt;"> pdf;<br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;"> <br /></span><span style="font-size: 10pt;">} </span><span style="color: #7f0055; font-size: 10pt;">catch</span><span style="font-size: 10pt;"> (Exception e) {<br /></span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">e</span><span style="font-size: 10pt;">.printStackTrace();<br /></span><span style="font-size: 10pt; line-height: 14.2667px;">}</span></b></span></div><p></p><p class="MsoNormal"><o:p></o:p></p><p style="text-align: justify;"></p><p style="text-align: justify;"> <span style="font-size: large;">Segue o exemplo usando o apache commons:</span></p><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="color: #7f0055; font-size: 10pt;">try</span><span style="font-size: 10pt;"> {<br /></span></b><b><span style="font-size: 10pt;"> URL </span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> URL(</span><span style="color: #2a00ff; font-size: 10pt;">"http://www.pdf995.com/samples/pdf.pdf"</span><span style="font-size: 10pt;">);</span></b></span></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><br /></span></b></span></div><div style="line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"> <span style="background-color: #fcff01;"> </span></span></b></span><b style="font-family: courier;"><span style="background-color: #fcff01; color: #3f7f5f; font-size: 10pt;">//cria o proxy com ip e porta do proxy</span></b></div><div style="line-height: normal; margin-bottom: 0cm; text-align: left;"><b style="background-color: #fcff01;"><span style="font-family: "Courier New"; font-size: 10pt;"><span> <span> </span></span>URLConnection </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">openConnection</span><span style="font-family: "Courier New"; font-size: 10pt;"> = </span><span style="color: #6a3e3e; font-family: "Courier New"; font-size: 10pt;">url</span><span style="font-family: "Courier New"; font-size: 10pt;">.openConnection(</span><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">new</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;"> Proxy(Proxy.Type.</span><i><span style="color: #0000c0; font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">HTTP</span></i><span style="font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">, </span><span style="color: #7f0055; font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">new</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;"> InetSocketAddress(</span><span style="color: #2a00ff; font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">"ip_do_proxy"</span><span style="font-family: "Courier New"; font-size: 10pt; line-height: 14.2667px;">, 8080)));</span></b></div><div style="line-height: normal; margin-bottom: 0cm;"><span style="font-family: courier;"><b><span style="font-size: 10pt;"><br /></span></b><b><span style="font-size: 10pt;"> InputStream </span><span style="color: #0000c0; font-size: 10pt;">in</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> BufferedInputStream(</span></b></span><b style="font-family: courier;"><span style="font-size: 10pt;"><span style="background-color: #fcff01; color: #0000c0;">openConnection</span></span><span style="font-size: 10pt;"><span style="background-color: #fcff01;">.getInputStream()</span></span></b><span style="font-family: courier;"><b><span style="font-size: 10pt;">);<br /></span></b><b><span style="font-size: 10pt;"> <br /></span></b><b><span style="font-size: 10pt;"> </span><span lang="PT-BR" style="font-size: 10pt;">File </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;"> = File.<i>createTempFile</i>(</span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">"nomedoc"</span><span lang="PT-BR" style="font-size: 10pt;">, </span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">".pdf"</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//cria arquivo temporário<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">fos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">new</span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream(</span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// passa o arquivo para o fos<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> <br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> IOUtils.copy(in, fos); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// usando org.apache.commons.io.IOUtils para passar os dados para o arquivo<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> <br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> </span><span style="font-size: 10pt;">in.close();<br /></span></b><b><span style="font-size: 10pt;"> fos.close();<br /></span></b><b><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">return</span><span style="font-size: 10pt;"> pdf;<br /></span></b><span style="font-size: 10pt;"><b> <br /></b></span><b><span style="font-size: 10pt;">} </span><span style="color: #7f0055; font-size: 10pt;">catch</span><span style="font-size: 10pt;"> (Exception e) {<br /></span></b><b><span style="font-size: 10pt;"> e.printStackTrace();<br /></span></b><span style="font-size: 10pt; line-height: 14.2667px;"><b>}</b></span></span></div><p></p><p class="MsoNormal"><o:p></o:p></p><p></p><p style="text-align: justify;"> <span style="font-size: large;"> Para este artigo é isso. Se quiser saber como fazer sem o proxy está aqui o artigo:</span></p><p style="text-align: justify;"><a href="http://olamundo-java.blogspot.com/2022/11/pegando-um-arquivo-de-uma-url-com-java.html">Pegando um arquivo de uma URL com Java</a></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-58782068439098226292022-11-03T12:12:00.001-07:002022-11-03T12:41:52.519-07:00Pegando um arquivo de uma URL com Java<p style="text-align: justify;"><span style="font-size: large;"> <span> Nesse artigo vou mostrar como ler um arquivo de uma URL. Isso pode ser aplicado a um PDF, uma imagem, etc. Vou mostrar uma forma apenas com Java puro e outra que usa o </span><b>org.apache.commons.io.IOUtils </b>para copiar do InputStream para o OutputStream.</span></p><p style="text-align: justify;"><span style="font-size: large;"><span> </span><span> No problema em questão a necessidade original era buscar um arquivo e retorná-lo em memória para um método que irá guardá-lo no banco de dados.</span><br /></span></p><p style="text-align: justify;"><span style="font-size: large;"><span> </span><span> Segue o exemplo de código apenas com o Java puro:</span></span></p><div style="line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="font-family: courier;"><b><span style="color: #7f0055; font-size: 10pt;">try</span><span style="font-size: 10pt;"> {<br /></span><span style="font-size: 10pt;"> URL </span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> URL(</span><span style="color: #2a00ff; font-size: 10pt;">"http://www.pdf995.com/samples/pdf.pdf"</span><span style="font-size: 10pt;">);<br /></span><span style="font-size: 10pt;"> InputStream </span><span style="color: #0000c0; font-size: 10pt;">in</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;">
BufferedInputStream(</span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;">.openStream());<br /></span><span style="font-size: 10pt;"> ByteArrayOutputStream </span><span style="color: #0000c0; font-size: 10pt;">out</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;">
ByteArrayOutputStream();<br /></span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">byte</span><span style="font-size: 10pt;">[] </span><span style="color: #0000c0; font-size: 10pt;">buf</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">byte</span><span style="font-size: 10pt;">[121072]; </span><span style="color: #3f7f5f; font-size: 10pt;">//quantidade de
bytes lida por vez<br /></span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">int</span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">i</span><span style="font-size: 10pt;"> = 0;<br /></span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">while</span><span style="font-size: 10pt;"> (-1 != (i =
in.read(buf))){<br /></span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">out</span><span style="font-size: 10pt;">.write(</span><span style="color: #0000c0; font-size: 10pt;">buf</span><span style="font-size: 10pt;">, 0, </span><span style="color: #0000c0; font-size: 10pt;">i</span><span style="font-size: 10pt;">);<br /></span><span style="font-size: 10pt;"> }<br /></span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;"> out.close();<br /></span><span style="font-size: 10pt;"> </span><span lang="PT-BR" style="font-size: 10pt;">in.close();<br /></span><span lang="PT-BR" style="font-size: 10pt;"> <br /> </span><span lang="PT-BR" style="font-size: 10pt;"> </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">byte</span><span lang="PT-BR" style="font-size: 10pt;">[] </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">dadosRecebidos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">out</span><span lang="PT-BR" style="font-size: 10pt;">.toByteArray();<br /></span><span lang="PT-BR" style="font-size: 10pt;"> <br /> </span><span lang="PT-BR" style="font-size: 10pt;"> File </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;"> = File.<i>createTempFile</i>(</span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">"nomedoc"</span><span lang="PT-BR" style="font-size: 10pt;">, </span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">".pdf"</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//cria arquivo temporário<br /></span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">fos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">new</span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream(</span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// passa o arquivo para o fos<br /></span><span lang="PT-BR" style="font-size: 10pt;"> fos.write(dadosRecebidos); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//escreve os dados no arquivo criado<br /></span><span lang="PT-BR" style="font-size: 10pt;"> </span><span style="font-size: 10pt;">fos.close();<br /></span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">return</span><span style="font-size: 10pt;"> pdf;<br /></span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;"> <br /> </span><span style="font-size: 10pt;">} </span><span style="color: #7f0055; font-size: 10pt;">catch</span><span style="font-size: 10pt;"> (Exception e) {<br /></span><span style="font-size: 10pt;"> </span><span style="color: #0000c0; font-size: 10pt;">e</span><span style="font-size: 10pt;">.printStackTrace();<br /></span><span style="font-size: 10pt; line-height: 107%;">}</span></b></span></div><p>
</p><p class="MsoNormal"><o:p></o:p></p><p style="text-align: justify;"></p><p style="text-align: justify;"><span><span><span> </span><span> <span style="font-size: large;"> Segue o exemplo usando o apache commons:</span></span></span></span></p><div style="line-height: normal; margin-bottom: 0cm; text-align: left;"><span style="font-family: courier;"><b><span style="color: #7f0055; font-size: 10pt;">try</span><span style="font-size: 10pt;"> {<br /></span></b><b><span style="font-size: 10pt;"> URL </span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;"> URL(</span><span style="color: #2a00ff; font-size: 10pt;">"http://www.pdf995.com/samples/pdf.pdf"</span><span style="font-size: 10pt;">);<br /></span></b><b><span style="font-size: 10pt;"> InputStream </span><span style="color: #0000c0; font-size: 10pt;">in</span><span style="font-size: 10pt;"> = </span><span style="color: #7f0055; font-size: 10pt;">new</span><span style="font-size: 10pt;">
BufferedInputStream(</span><span style="color: #0000c0; font-size: 10pt;">url</span><span style="font-size: 10pt;">.openStream());<br /></span></b><b><span style="font-size: 10pt;"> <br /> </span></b><b><span style="font-size: 10pt;"> </span><span lang="PT-BR" style="font-size: 10pt;">File </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;"> = File.<i>createTempFile</i>(</span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">"nomedoc"</span><span lang="PT-BR" style="font-size: 10pt;">, </span><span lang="PT-BR" style="color: #2a00ff; font-size: 10pt;">".pdf"</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">//cria arquivo
temporário<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream </span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">fos</span><span lang="PT-BR" style="font-size: 10pt;"> = </span><span lang="PT-BR" style="color: #7f0055; font-size: 10pt;">new</span><span lang="PT-BR" style="font-size: 10pt;"> FileOutputStream(</span><span lang="PT-BR" style="color: #0000c0; font-size: 10pt;">pdf</span><span lang="PT-BR" style="font-size: 10pt;">); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// passa o arquivo para o fos<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> <br /> </span></b><b><span lang="PT-BR" style="font-size: 10pt;"> IOUtils.copy(in, fos); </span><span lang="PT-BR" style="color: #3f7f5f; font-size: 10pt;">// usando org.apache.commons.io.IOUtils para passar os
dados para o arquivo<br /></span></b><b><span lang="PT-BR" style="font-size: 10pt;"> <br /> </span></b><b><span lang="PT-BR" style="font-size: 10pt;"> </span><span style="font-size: 10pt;">in.close();<br /></span></b><b><span style="font-size: 10pt;"> fos.close();<br /></span></b><b><span style="font-size: 10pt;"> </span><span style="color: #7f0055; font-size: 10pt;">return</span><span style="font-size: 10pt;"> pdf;<br /></span></b><span style="font-size: 10pt;"><b> <br /></b></span><b><span style="font-size: 10pt;">} </span><span style="color: #7f0055; font-size: 10pt;">catch</span><span style="font-size: 10pt;"> (Exception e) {<br /></span></b><b><span style="font-size: 10pt;"> e.printStackTrace();<br /></span></b><span style="font-size: 10pt; line-height: 107%;"><b>}</b></span></span></div><p>
</p><p class="MsoNormal"><o:p></o:p></p><p></p><p style="text-align: justify;"><span><span><span><span> </span><span> <span style="font-size: large;"> Para este artigo é isso.</span></span><br /></span></span></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-60119285251298419172022-07-23T18:23:00.006-07:002022-07-23T18:39:58.405-07:00Como e porquê configurar o cache do Hibernate<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Nesse
artigo vou trazer algo que vi sobre a importância de fazer uso correto de cache
do Hibernate em um artigo do Vlad Mihalcea que deixo no final para que possam
acessar e ver outros detalhes como o gráfico que mostra a diferença de tempo entre
a consulta que usa e a que não usa o cache.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Não
vou me prender a demonstração da melhora de performance pois isto está no
artigo dele. Aqui quero apenas mostrar a configuração necessária e dizer o porquê
configurar o cache de acordo com o tamanho da sua aplicação.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">As
consultas JPQL são compiladas antes da execução, e como sabemos, há um custo
para se compilar um código. Então, caso o cache não esteja configurado
corretamente, todas as vezes que as consultas forem executas elas serão
compiladas, gerando sempre esse custo adicional. As consultas usando Criteria API
também passam por esse impacto porque são transformadas em JPQL;<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Por
padrão o Hibernate coloca 2048 consultas no cache, mas se seu sistema for muito
grande isso pode não ser suficiente.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">A
propriedade que trata dessa configuração é a <b><span style="background: yellow; mso-highlight: yellow;">hibernate.query.plan_cache_max_size</span></b>. Basta
calcular quantas consultas seu sistema tem e configurar essa propriedade para
atender essa demanda. Lembrando que o cache não armazena apenas JPQL, então o
valor precisa ser a soma de todas as consultas do sistema.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">No
caso que Native Queries, embora não haja esse processo de compilação, o
hibernate guarda metadados sobre os parâmetros passados, e a configuração desse
cache é feita na propriedade <b><span style="background: yellow; mso-highlight: yellow;">hibernate.query.plan_parameter_metadata_max_size</span></b>. O valor
default é 128, mas como mostrado no artigo do Mihalcea, a diferença para Native
Queries não é tão grande com ou sem o cache configurado.<o:p></o:p></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><br /></span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Você pode configurar essas propriedades no persistence.xml como abaixo:</span></p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><br /></span></p><div class="line number1 index0 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">persistence</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><div class="line number2 index1 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">persistence-unit</code> <code class="xml color1" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: grey; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">name</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">=</code><code class="xml string" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #2a00ff; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">"my-persistence-unit"</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><div class="line number3 index2 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">...</code></div><div class="line number4 index3 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">properties</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><div class="line number5 index4 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><! – consultas - default: 2048 – ></code></div><div class="line number6 index5 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">property</code> <code class="xml color1" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: grey; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">name</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">=</code><code class="xml string" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #2a00ff; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">"hibernate.query.plan_cache_max_size"</code> <code class="xml color1" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: grey; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">value</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">=</code><code class="xml string" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #2a00ff; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">"4096"</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">/></code></div><div class="line number7 index6 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><! – metadados - default: 128 – ></code></div><div class="line number8 index7 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">property</code> <code class="xml color1" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: grey; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">name</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">=</code><code class="xml string" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #2a00ff; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">"hibernate.query.plan_parameter_metadata_max_size"</code> </div><div class="line number8 index7 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml color1" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: grey; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"><span> </span><span> </span><span> </span><span> </span>value</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">=</code><code class="xml string" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #2a00ff; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">"256"</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">/></code></div><div class="line number9 index8 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"></</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">properties</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><div class="line number10 index9 alt1" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml spaces" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"> </code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"></</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">persistence-unit</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"></span></p><div class="line number11 index10 alt2" style="border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #1e404e; direction: ltr; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 18px; height: auto; inset: auto; letter-spacing: -0.24px; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; white-space: pre; width: auto;"><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;"></</code><code class="xml keyword" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: #7f0055; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; font-weight: 700; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">persistence</code><code class="xml plain" style="background: 0px 0px; border-radius: 0px; border: 0px; box-shadow: none; box-sizing: content-box; color: black; direction: ltr; display: inline; float: none; font-family: Monaco, consolas, "bitstream vera sans mono", "courier new", Courier, monospace; font-size: 1em; height: auto; inset: auto; line-height: 1.1em; margin: 0px; outline: 0px; overflow: visible; padding: 0px; position: static; vertical-align: baseline; width: auto;">></code></div><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;"><br /></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" style="font-size: 14pt; line-height: 107%;">Fonte: https://vladmihalcea.com/hibernate-query-plan-cache/<o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-57752726565002146712022-06-16T12:19:00.002-07:002022-06-16T12:20:04.285-07:00Visualizando processos Java rodando em um ambiente Linux com os comandos TOP e PS<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">Nesse artigo eu vou mostrar duas formas de exibir os
processos Java que estão rodando em uma máquina Linux. Isso é muito importante pra ver de forma rápida quantidade de uso de memória, quantidade de intâncias de aplicações rodando, parâmetros passado para JVM, tempo de atividade de cada processo, etc.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><span style="mso-spacerun: yes;"> </span><o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">A primeira é mais resumida, onde as principais
informações que vamos ter são: número do processo, usuário responsável, tempo
de execução e memória em uso. Para isto basta executar o comando:<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-size: 14pt; line-height: 107%;"><span style="font-family: courier;"><b>$ top -bc -n 1 |grep java</b></span><span face="Helvetica, sans-serif"><o:p></o:p></span></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 36pt;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;">A segunda é mais longa pois além das informações da
primeira, ela também mostra os argumentos passados para a JVM, o que pode ser
muito útil quando precisamos ver se alguma configuração feita realmente está
sendo utilizada.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span face=""Helvetica",sans-serif" lang="PT-BR" style="font-size: 14pt; line-height: 107%; mso-ansi-language: PT-BR;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-size: 14pt; line-height: 107%;"><span style="font-family: courier;"><b>$ ps aux | grep -i java </b></span><span face="Helvetica, sans-serif"><o:p></o:p></span></span></p><p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-size: 14pt; line-height: 107%;"><span style="font-family: courier;"><b><br /></b></span></span></p><p class="MsoNormal" style="text-align: justify;"><span lang="PT-BR" style="font-size: 14pt; line-height: 107%;"><span face="Helvetica, sans-serif" style="text-indent: 48px;"><span> </span><span> </span><span>Para esse </span>artigo é só, espero que ajude no dia a dia das atividades de monitoramento e manutenção das aplicações.</span></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-41916457407756316722022-06-02T08:46:00.000-07:002022-06-02T08:46:48.461-07:00Matriz de Rastreabilidade - Mapeando os impactos das alterações do sistema<p> </p><p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">Nesse
artigo eu falar sobre Matriz de Rastreabilidade. Essa matriz é um gráfico que
mostra a dependência entre partes do sistema.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span style="mso-tab-count: 1;"> </span>O objetivo é ter uma ferramenta visual de rápida
identificação de áreas que precisam ser testadas para evitar erros em produção
devido à falta de testes suficientes após alterações que parecem pontuais, mas
na verdade tem um impacto maior.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span style="mso-tab-count: 1;"> </span>A matriz possui 2 eixos: Manutenção e Impacto; e é
construída colocando o nome dos módulos do sistema (ou partes importantes que
se deseja controlar, como por exemplo, um método que é muito usado) em ambos os
eixos, e depois marcando os pontos onde há dependências.<o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span style="mso-tab-count: 1;"> </span>Aqui abaixo tem um exemplo:</span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span style="mso-spacerun: yes;"> </span></span></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGYePjpGaN_1CS19z9QGZyGFkRfVsbvATgmD-XYnPFL4KgsuFdvuXOvIntpjkWaz-akhAesyFdW9Q3c6PregSP1geOcuXCAGM_H4q2G_9NK20cBejuE_pzERLmp8GW6Ntrj7MKTH3Z7F6SirBRUsJ52XB-C14Yew4aaPYsU-2PNfYgl431CUF0sWD3/s1182/Capturar1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="554" data-original-width="1182" height="301" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhGYePjpGaN_1CS19z9QGZyGFkRfVsbvATgmD-XYnPFL4KgsuFdvuXOvIntpjkWaz-akhAesyFdW9Q3c6PregSP1geOcuXCAGM_H4q2G_9NK20cBejuE_pzERLmp8GW6Ntrj7MKTH3Z7F6SirBRUsJ52XB-C14Yew4aaPYsU-2PNfYgl431CUF0sWD3/w640-h301/Capturar1.PNG" width="640" /></a></div><br /><o:p></o:p><p></p>
<p class="MsoNormal"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><span style="mso-tab-count: 1;"> </span>A matriz de rastreabilidade pode ser feita por qualquer
pessoa da equipe, mas um DEV tem maior conhecimento dessas dependências e pode
dar uma grande ajuda.</span> <o:p></o:p></p>
<p class="MsoNormal" style="text-align: justify;"><o:p> </o:p></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">Essa
matriz pode ser bem grande dependendo do tamanho do sistema e do nível de
detalhes, que pode mudar de acordo com a necessidade, por exemplo, pode ser
mapeado módulos mas também classes ou métodos muito utilizados. <o:p></o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;"><o:p> </o:p></span></p>
<p class="MsoNormal" style="text-align: justify; text-indent: 35.4pt;"><span style="font-family: "Helvetica",sans-serif; font-size: 14.0pt; line-height: 107%;">Deve
ser atualizada sempre que novas dependências forem encontradas e estar disponível
para a equipe de testes e homologação calcular o que testar e ter uma ideia do tempo
dos testes.<o:p></o:p></span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0tag:blogger.com,1999:blog-5780775897719955783.post-71154088283786103332022-05-16T13:19:00.005-07:002022-06-17T06:34:31.025-07:00Erro "Invalid secret key format" ao iniciar o Jboss na migração do Java da Oracle para o OpenJDK<p style="text-align: justify;"> <span> </span><span> Neste artigo vou mostrar a solução para o erro </span><b>java.io.IOException: Invalid secret key format, </b>que ocorre ao usar o Vault do Jboss para armazenar senhas criptografadas. Esse erro ocorre no módulo PicketBox, que é um framework de segurança Java para prover aos desenvolvedores as seguintes funcionalidades:</p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"></p><ul><li>Suporte a autenticação;</li><li>Suporte a autorização;</li><li>Suporte a auditoria;</li><li>Etc.</li></ul><p></p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"> Ao usar o OpenJDK o módulo Picketbox não tem acesso ao módulo "sun.jdk", então ele não pode usar a classe "com.sun.crypto.provider.SealedObjectForKeyProtector", ocasionando em um dos erros abaixo: </p><p style="text-align: justify;"><br /></p><div class="code-raw" style="background-color: white; box-sizing: border-box; color: #252525; font-family: "Red Hat Text", RedHatText, "Helvetica Neue", Arial, sans-serif; font-size: 16px; position: relative;"><div class="code-raw-toolbar" style="background: rgb(237, 237, 237); border: 0.0625rem solid rgb(237, 237, 237); box-sizing: border-box; height: 2.5rem; position: relative;"><a class="code-raw-btn" href="https://access.redhat.com/solutions/3419621#" style="background: rgb(255, 255, 255); border: 0.0625rem solid rgb(204, 204, 204); box-sizing: border-box; color: #252525; font-size: 0.75rem; padding: 0.25rem 0.5rem; position: absolute; right: 0.3125rem; text-decoration-line: none; top: 0.3125rem;">Raw</a></div><pre style="background-color: whitesmoke; border-radius: 0px; border: 0.0625rem solid rgb(237, 237, 237); box-sizing: border-box; color: #333333; font-family: Consolas, Monaco, "Andale Mono", monospace; font-size: 0.8125rem; line-height: 1.42857; margin-bottom: 0.625rem; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 0.9375rem; white-space: pre-wrap; word-break: normal;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-family: Consolas, Monaco, "Andale Mono", monospace; font-size: inherit; overflow-wrap: inherit; padding: 0px; white-space: inherit;">Caused by: java.io.IOException: Invalid secret key format
at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:856)
at java.security.KeyStore.load(KeyStore.java:1445)
at org.picketbox.util.KeyStoreUtil.getKeyStore(KeyStoreUtil.java:201)
at org.picketbox.util.KeyStoreUtil.getKeyStore(KeyStoreUtil.java:151)
at org.picketbox.plugins.vault.PicketBoxSecurityVault.getKeyStore(PicketBoxSecurityVault.java:688)
... 11 more
</code></pre></div><p style="background-color: white; box-sizing: border-box; color: #252525; font-family: "Red Hat Text", RedHatText, "Helvetica Neue", Arial, sans-serif; font-size: 16px; line-height: 1.5em; margin: 0px 0px 1rem;">ou</p><div class="code-raw" style="background-color: white; box-sizing: border-box; color: #252525; font-family: "Red Hat Text", RedHatText, "Helvetica Neue", Arial, sans-serif; font-size: 16px; position: relative;"><div class="code-raw-toolbar" style="background: rgb(237, 237, 237); border: 0.0625rem solid rgb(237, 237, 237); box-sizing: border-box; height: 2.5rem; position: relative;"><a class="code-raw-btn" href="https://access.redhat.com/solutions/3419621#" style="background: rgb(255, 255, 255); border: 0.0625rem solid rgb(204, 204, 204); box-sizing: border-box; color: #252525; font-size: 0.75rem; padding: 0.25rem 0.5rem; position: absolute; right: 0.3125rem; text-decoration-line: none; top: 0.3125rem;">Raw</a></div><pre style="background-color: whitesmoke; border-radius: 0px; border: 0.0625rem solid rgb(237, 237, 237); box-sizing: border-box; color: #333333; font-family: Consolas, Monaco, "Andale Mono", monospace; font-size: 0.8125rem; line-height: 1.42857; margin-bottom: 0.625rem; margin-top: 0px; overflow-wrap: normal; overflow: auto; padding: 0.9375rem; white-space: pre-wrap; word-break: normal;"><code style="background-color: transparent; border-radius: 0px; box-sizing: border-box; color: inherit; font-family: Consolas, Monaco, "Andale Mono", monospace; font-size: inherit; overflow-wrap: inherit; padding: 0px; white-space: inherit;"> Caused by: java.io.IOException: Invalid secret key format
at com.sun.crypto.provider.JceKeyStore.engineLoad(JceKeyStore.java:856)
at java.security.KeyStore.load(KeyStore.java:1445) [rt.jar:1.8.0_191-1-redhat]
at org.wildfly.security.credential.store.impl.KeyStoreCredentialStore.load(KeyStoreCredentialStore.java:859) [wildfly-elytron-1.6.1.Final-redhat-00001.jar:1.6.1.Final-redhat-00001]
... 11 more</code></pre></div><p><span> </span><span> </span></p><p style="text-align: justify;"> Para corrigir o problema, é necessário adicionar ao <span style="text-align: justify;">PicketBox a dependência ao </span><span style="text-align: justify;">"sun.jdk", no arquivo <b>%JBOSS_HOME%/</b></span><b>modules/system/layers/base/org/picketbox/main/module.xml</b> a seguinte linha:</p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><b><span style="background-color: #fcff01; font-family: courier;"><module name="sun.jdk"/></span></b></p><p style="text-align: justify;"><br /></p><p style="text-align: justify;"><span> </span><span> </span><span> Pode-se também adicionar um parametro na JVM da seguinte forma:</span></p><p style="text-align: justify;"><span><span><br /></span></span></p><p style="text-align: justify;"><span><b><span style="background-color: #fcff01; font-family: courier;"><span style="color: #242424; font-size: 14px; text-align: left;">-Djboss.modules.system.pkgs=org.jboss.byteman,com.sun.crypto.provider</span><span> </span></span></b><span> </span><span> </span></span></p><p style="text-align: justify;"><span><span><br /></span></span></p><p style="text-align: justify;"><span><span> </span><span> </span><span> </span>Dessa forma, o módulo em questão é carregado e o uso do Vault e criptografia do JBoss funciona normalmente como no JDK da Oracle. A partir da versão 7.1 do JBoss EAP esse problema foi corrigido, a primeira solução que mostrei já vem por padrão. </span><br /></p><p style="text-align: justify;"><span><br /></span></p><p style="text-align: justify;"><span><br /></span></p><p style="text-align: justify;"><span>Fonte:</span></p><p style="text-align: justify;"><span>https://picketbox.jboss.org/</span></p><p style="text-align: justify;"><span>http://www.mastertheboss.com/jbossas/jboss-security/solving-java-io-ioexception-invalid-secret-key-format/</span></p><p style="text-align: justify;"><span style="text-align: left;">https://issues.redhat.com/browse/JBEAP-14660</span></p><p style="text-align: justify;"><span face=""Segoe UI", system-ui, "Apple Color Emoji", "Segoe UI Emoji", sans-serif" style="background-color: white; color: #242424; font-size: 14px; text-align: start;"> </span></p>Daniel Oliveirahttp://www.blogger.com/profile/08271418845638667564noreply@blogger.com0