segunda-feira, 3 de setembro de 2012

java.io.IOException: Acesso negado (Quartz)

Ao executar uma trigger agendada no Quartz, onde um arquivo TXT é criado e salvo na rede, ocorre o seguinte erro:


Informações: Illegal access: this web application instance has been stopped already.  Could not load org.quartz.core.JobRunShell.  The eventual following stack trace is caused by an error thrown for debugging purposes as well as to attempt to terminate the thread which caused the illegal access, and has no functional impact.
java.lang.IllegalStateException
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1597)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
at org.quartz.impl.StdJobRunShellFactory.borrowJobRunShell(StdJobRunShellFactory.java:91)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:332)

Exception in thread "DefaultQuartzScheduler_QuartzSchedulerThread" java.lang.NoClassDefFoundError: org/quartz/core/JobRunShell
at org.quartz.impl.StdJobRunShellFactory.borrowJobRunShell(StdJobRunShellFactory.java:91)
at org.quartz.core.QuartzSchedulerThread.run(QuartzSchedulerThread.java:332)
Caused by: java.lang.ClassNotFoundException: org.quartz.core.JobRunShell
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1711)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1556)
... 2 more
java.io.IOException: Acesso negado
at java.io.WinNTFileSystem.createFileExclusively(Native Method)
at java.io.File.createNewFile(Unknown Source)
at br.com.lpc.lpcsys.integracao.IntegracaoJbsCouro.GerarTxt(IntegracaoJbsCouro.java:46)
at br.com.lpc.lpcsys.quartz.JobIntegraBysoft.execute(JobIntegraBysoft.java:48)
at org.quartz.core.JobRunShell.run(JobRunShell.java:191)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:516)

Solucação:

Acesse a ferramenta (Configure TomCat) "C:\Program Files\Apache Software Foundation\Tomcat 7.0\bin\Tomcat7w.exe //ES//Tomcat7". Abra a guia (Log On) e informe uma conta com permissões suficientes no diretório onde o TXT será criado.

Ou no serviço: Painel de Controle > Ferramentas Administrativas > Serviços > Apache Tomcat.

quinta-feira, 30 de agosto de 2012

Oracle update com select



UPDATE PERMISSAO
SET
  PERMISSAO.SELECIONAR = 0,
  PERMISSAO.ALTERAR = 0,
  PERMISSAO.INCLUIR = 0,
  PERMISSAO.EXCLUIR = 0
WHERE
  PERMISSAO.TELA_ID = 99
AND
  (SELECT USUARIO.CLIENTE FROM USUARIO WHERE USUARIO.ID = PERMISSAO.USUARIO_ID) = 1;


segunda-feira, 27 de agosto de 2012

Substituir string por outra string no oracle.


Substituir string por outra string no oracle.

UPDATE USUARIO
  SET USUARIO.PATH_FOTO =  REPLACE( USUARIO.PATH_FOTO ,'/Sistema/','/sistema/')

Altera de /Sistema/ para /sistema/.

Ex: /Sistema/fotos/
Altera para: /sistema/fotos/

sexta-feira, 24 de agosto de 2012

java.lang.NullPointerException java.lang.Class.isAssignableFrom(Native Method)


Erro: Ao clicar no botão salvar.
java.lang.NullPointerException java.lang.Class.isAssignableFrom(Native Method)

Local do problema:
<h:commandButton
 actionListener="#{contatoMB.save(tabHawb)}"
 value="Salvar"/>

Solução:
<h:commandButton
 actionListener="#{contatoMB.save('tabHawb')}"
 value="Salvar"/>

segunda-feira, 20 de agosto de 2012

Tomcat 7 + SSL (Windows)


1) Criar o arquivo keystore:

Em %JAVA_HOME%/bin execute o seguinte comando:

keytool -genkey -alias meuCertificado -keyalg DSA -keypass senha -storepass senha -keystore C:/certificados/meuCertificado.jks -dname "cn=empresa, ou=area, o=grupoDeTrabalho, l=Cidade, S=Estado, c=Pais" -validity 365

2)Configurar o arquivo server.xml do TomCat:

Localize a seguinte declaração:

<!--<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" />-->

Descomente e altere conforme abaixo:

Connector SSLEnabled="true" acceptCount="100" clientAuth="false"    disableUploadTimeout="true" enableLookups="false" maxThreads="25"    port="8443" keystoreFile="C:\certificados\meuCertificado.jks" keystorePass="senha"    protocol="org.apache.coyote.http11.Http11NioProtocol" scheme="https"    secure="true" sslProtocol="TLS" />

3)Testando:
Acesse https://localhost:8443.

4)Configurar a aplicação para usar SSL:

Adicione no web.xml

<security-constraint>  
  <web-resource-collection>    
    <web-resource-name>securedapp</web-resource-name>      
    <url-pattern>/*</url-pattern>  //Ativar SSL em todas as páginas
    <url-pattern>/login.jsf</url-pattern> // Ativar SSL em páginas específicas
    <url-pattern>/cadastro/*</url-pattern>  //Ativar SSL em pastas
  </web-resource-collection>  
  <user-data-constraint>      
    <transport-guarantee>CONFIDENTIAL</transport-guarantee>  
  </user-data-constraint>
</security-constraint>

Para desativar mude o CONFIDENTIAL para NONE.

quinta-feira, 16 de agosto de 2012

Hibernate 4.1.5 + TomCat 7 + JNDI Datasource + Oracle 10ge



<!-- A configuração abaixo deve ser adicionada ao context.xml do diretório conf do tomcat! -->
<Resource name="jdbc/testeDB"
auth="Container"
type="javax.sql.DataSource"
maxActive="100"
maxIdle="30"
maxWait="10000"
username="admin"
password="admin"
driverClassName="oracle.jdbc.OracleDriver"
url="jdbc:oracle:thin:@192.168.0.9:1521:XE"
removeAbandoned="true"
removeAbandonedTimeout="60"
logAbandoned="true"/>

OBS: Copiar ojdbc14.jar para o diretório lib do TomCat.

 <!-- Adicionar no Web.xml-->
 <resource-ref>
  <description>DataSource testeDB</description>
  <res-ref-name>jdbc/testeDB</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>


<!-- hibernate.cgf.xml -->
<!-- Configuração com Data Source -->
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.jdbc.use_streams_for_binary=">true</property>
<property name="hibernate.connection.datasource">java:/comp/env/jdbc/testeDB</property>
<property name="current_session_context_class">thread</property>
 
<!-- Configuração sem Data Source
<property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property>
<property name="hibernate.connection.url">jdbc:oracle:thin:@192.168.0.9:1521:XE</property>
<property name="hibernate.connection.username">admin</property>
<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
<property name="hibernate.connection.password">admin</property>
<property name="hibernate.jdbc.use_streams_for_binary=">true</property>
 -->

<!-- Pool de Conexões - C3P0 
        Colocar JARs na pasta lib do TomCat
Não é necessário quando a conexão é feita através de um Data Source. Nesse caso, o poll deve ser configurado no context.xml

  <property name="hibernate.connection.provider_class">org.hibernate.connection.C3P0ConnectionProvider</property>
<property name="hibernate.org.c3p0.min_size">3</property>
<property name="hibernate.org.c3p0.max_size">30</property>
<property name="hibernate.org.c3p0.timeout">10</property>
<property name="hibernate.org.c3p0.max_statements">0</property>
<property name="hibernate.org.c3p0.idle_test_period">30</property>
<property name="hibernate.org.c3p0.acquire_increment">5</property>
-->

terça-feira, 7 de agosto de 2012

Tomcat convertendo campos null para zero


Adicionar a seguinte linha em (VM Arguments) do Tomcat.

-Dorg.apache.el.parser.COERCE_TO_ZERO=false

Fonte: http://balusc.blogspot.com.br/2008/01/jsf-tutorial-with-eclipse-and-tomcat.html#IntegrateTomcatInEclipse