Galera estou tendo o seguinte erro ao fazer o deploy de uma lib do DB2:
Fri Oct 26 16:31:05 GMT-200 2012
Failed to disable db2jcc.jar.
Unexpected HTTP response: 500
Request
{
"address" => [("deployment" => "db2jcc.jar")],
"operation" => "deploy"
}
Response
Internal Server Error
{
"outcome" => "failed",
"failure-description" => {"Failed services" => {"jboss.deployment.unit.\"db2jcc.jar\".STRUCTURE" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"db2jcc.jar\".STRUCTURE: Failed to process phase STRUCTURE of deployment \"db2jcc.jar\""}},
"rolled-back" => true
}
Alguém sabe o por que ? Lembrando que o DB2 possui 3 libs 2 referente a lincença e 1 o drive em si.
Vlw.
zanata
Outubro 27, 2012, 7:20am
#2
Olá.
Pelo que entendi, trata-se de um driver JDBC do DB2. Caso esteja errado, peço que desconsidere a minha mensagem.
No JBoss AS 7, o ideal é que o driver seja implantado como um módulo ($JBOSS_HOME/modules). Tem um jeito certo para se fazer isso, posso detalhar melhor caso estejamos falando da mesma coisa.
Considerando o erro que você passou, é provável que você tenha implantado o driver diretamente no diretório de deploy ($JBOSS_HOME/standalone/deployments), o que também é permitido. Nesse caso há algumas restrições, pois somente drivers compatíveis com o TIPO 4 do JDBC é que podem ser implantados assim. É possível fazer a implantação de drivers do Tipo 3 ou inferior dessa forma, mas para isso você deve criar algumas configurações na estrutura META-INF/services do jar principal, indicando as dependências e as características do driver.
Na documentação do JBoss tem um exemplo de utilização dessa maneira: https://docs.jboss.org/author/display/AS71/DataSource+configuration
Sinceramente, acho mais simples configurar um módulo e fazer a referência no arquivo de configuração (standalone.xml - caso esteja trabalhando em modo standalone).
Se for esse mesmo o problema, avise-me para que eu possa passar mais detalhes caso necessário.
[]s
Aproveitando… a partir da versão 7.1, é obrigatório que os datasources sejam referenciados por nomes JNDI iniciados com java:/ ou java:jboss/
Fala zanata, obrigado pela resposta.
É exatamente esse o problema, vou fazer conforme me orientou e posto o resultado.
Obrigado.
Abs.
Fiz os testes e consegui fazer o modulo me parece estar certo porém ao fazer o deploy da aplicação obtive o seguinte erro:
08:01:36,877 INFO [org.jboss.as.controller] (Controller Boot Thread) Service status report
New missing/unsatisfied dependencies:
service jboss.jdbc-driver.db2 (missing)
08:01:36,890 ERROR [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.Final "Lightning" started (with errors) in 1992ms - Started 93 of 151 services (3 services failed or missing dependencies, 55 services are passive or on-demand)
zanata no print que postei se reparar a conexão com o DB2 está em verde indicando que o dataSource está pronto para uso, no AS7 há algum lugar que eu possa fazer um testConnection ? Ou algo assim ? Ou ele ja faz no momento que subi o server ?
jmag
Outubro 29, 2012, 7:21am
#6
Olá
Voce pode fazer um test connection utilizando o CLI
[code]# $JBOSS_HOME/bin/jboss-cli.sh -c
/subsystem=datasources/datasource=java:jboss/datasources/DB2:test-connection-in-pool[/code]
Abs
não tenho essa opção: # $JBOSS_HOME/bin/jboss-cli.sh -c
No windows é igual ? Estou usando a versão free no windows.
zanata
Outubro 29, 2012, 8:23am
#8
Olá.
No Windows é a mesma coisa, basta usar o jboss-cli.bat
Antes, diga pra gente como você montou o pacote do módulo, pois a falha aponta uma dependência não atendida.
Por exemplo, utilizando um módulo de exemplo que existe na instalação padrão (h2database), olha só como fica a estrutura:
$JBOSS_HOME/modules
|
+--com
|
+--h2database
|
+--h2
|
+--main
|
+-- h2-1.3.161.jar
+-- module.xml
+-- (caso haja mais recursos do driver, insira aqui também)
No arquivo module.xml, é necessário inserir as informações dos arquivos que inseriu no diretório “main” e as dependências (veja que o item dependências faz referência a outros módulos):
<module xmlns="urn:jboss:module:1.1" name="com.h2database.h2">
<resources>
<resource-root path="h2-1.3.161.jar"/>
<!-- Insert resources here -->
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="javax.servlet.api" optional="true"/>
</dependencies>
</module>
É bem provável que para o driver do DB2 seja necessário definir as dependências para “javax.api” e “javax.transaction.api” também.
Faça um novo teste. Ok? Se complicar, envia a estrutura que criou (explicativo).
[]s
Fiz via admin. Resultado:
[standalone@localhost:9999 /] /subsystem=datasources/data-source=java\:jboss\/da
tasources\/DB2:test-connection-in-pool
{"outcome" => "success"}
[standalone@localhost:9999 /]
Isso quer dizer que consegui conexão com o banco ? E quanto ao erro no console do eclipse o erro do tópico você sabe o que pode ser ?
abs.
A estrutura está correta conforme imagem em anexo.
|
+--com
|
+--h2database
|
+--ibm
|
+--db2
|
+--main
|
+-- db2jcc.jar
+-- db2jcc_license_cisuz.jar
+-- db2jcc_license_cu.jar
+-- module.xml
Module.xml
<?xml version="1.0" encoding="UTF-8"?>
<module xmlns="urn:jboss:module:1.0" name="com.ibm.db2">
<resources>
<resource-root path="db2jcc4.jar"/>
<resource-root path="db2jcc_license_cu.jar"/>
<resource-root path="db2jcc_license_cisuz.jar"/>
</resources>
<dependencies>
<module name="javax.api"/>
<module name="javax.transaction.api"/>
<module name="sun/io"/>
</dependencies>
</module>
zanata
Outubro 29, 2012, 8:59am
#11
André, aparentemente está tudo OK. O pool de conexões subiu e você está conseguindo estabelecer uma conexão com o BD.
Sobre o aviso que está sendo emitido no console, provavelmente deve ser porque os arquivos do driver não foram removidos do diretório “$JBOSS_HOME/standalone/deployments”. Verifique se não ficou nada por lá.
db2jcc4.jar
db2jcc_license_cu.jar
db2jcc_license_cisuz.jar
Caso ainda estejam no diretório, pode removê-los.
[]s
Infelizmente não há nada lá a não ser o war da minha aplicação. Removi os jar’s qua havia feito o deploy via console admin do AS7.
abs.
zanata
Outubro 29, 2012, 9:25am
#13
André. Encontrei outras pessoas com esse mesmo problema na Internet.
Estou encaminhando o link da thread (que parece estar resolvida) e vou transcrever/traduzir um trecho da mensagem apenas para que fique registrado aqui, caso outros passem pelo mesmo problema:
https://community.jboss.org/thread/202025
Editar o arquivo $JBOSS_HOME/modules/sun/jdk/main/module.xml e inserir o seguinte trecho na tag exports/include-set
<exports>
<include-set>
<path name="META-INF/services"/>
<path name="sun/io"/> <!-- manually added to provide character converter access for db2 driver -->
</include-set>
</exports>
Vamos ver se com isso o problema deixa de existir.
Outra recomentação é a de não deixar espaços em branco no início do arquivo “module.xml”
Fiz o teste e o erro continua.
13:25:49,277 INFO [org.jboss.as.controller] (Controller Boot Thread) Service status report
New missing/unsatisfied dependencies:
service jboss.jdbc-driver.db2 (missing)
13:25:49,284 ERROR [org.jboss.as] (Controller Boot Thread) JBoss AS 7.0.0.Final “Lightning” started (with errors) in 2004ms - Started 93 of 151 services (3 services failed or missing dependencies, 55 services are passive or on-demand)
zanata
Outubro 29, 2012, 12:39pm
#15
É. Não sei direito o que está acontecendo.
Faz um favor pra gente. Copia a seção “datasources” do seu arquivo $JBOSS_HOME/stantalone/configuration/standalone.xml e cola aqui. Peço que na cópia feita, altere os dados confidenciais (usuários, senhas e ips).
Só falta isso para ser analisado.
Obrigado.
Reparando em algumas coisas notei que com o comando abaixo o resultado não foi o esperado. Eu esperava que aparecesse dois drivers o nativo h2 e o que criei db2 certo ?
[standalone@localhost:9999 /] /subsystem=datasources:installed-drivers-list
{
"outcome" => "success",
"result" => [{
"driver-name" => "h2",
"deployment-name" => undefined,
"driver-module-name" => "com.h2database.h2",
"module-slot" => "main",
"driver-xa-datasource-class-name" => "org.h2.jdbcx.JdbcDataSource",
"driver-class-name" => "org.h2.Driver",
"driver-major-version" => 1,
"driver-minor-version" => 2,
"jdbc-compliant" => true
}]
}
standalone.xml
<?xml version='1.0' encoding='UTF-8'?>
<server name="PCT517250" xmlns="urn:jboss:domain:1.0">
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.connector"/>
<extension module="org.jboss.as.deployment-scanner"/>
<extension module="org.jboss.as.ee"/>
<extension module="org.jboss.as.ejb3"/>
<extension module="org.jboss.as.jaxrs"/>
<extension module="org.jboss.as.jmx"/>
<extension module="org.jboss.as.jpa"/>
<extension module="org.jboss.as.logging"/>
<extension module="org.jboss.as.naming"/>
<extension module="org.jboss.as.osgi"/>
<extension module="org.jboss.as.remoting"/>
<extension module="org.jboss.as.sar"/>
<extension module="org.jboss.as.security"/>
<extension module="org.jboss.as.threads"/>
<extension module="org.jboss.as.transactions"/>
<extension module="org.jboss.as.web"/>
<extension module="org.jboss.as.weld"/>
</extensions>
<management>
<security-realms>
<security-realm name="PropertiesMgmtSecurityRealm">
<authentication>
<properties path="mgmt-users.properties" relative-to="jboss.server.config.dir"/>
</authentication>
</security-realm>
</security-realms>
<management-interfaces>
<native-interface interface="management" port="9999"/>
<http-interface interface="management" port="9990"/>
</management-interfaces>
</management>
<profile>
<subsystem xmlns="urn:jboss:domain:logging:1.0">
<console-handler name="CONSOLE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
</console-handler>
<periodic-rotating-file-handler name="FILE" autoflush="true">
<level name="INFO"/>
<formatter>
<pattern-formatter pattern="%d{HH:mm:ss,SSS} %-5p [%c] (%t) %s%E%n"/>
</formatter>
<file relative-to="jboss.server.log.dir" path="server.log"/>
<suffix value=".yyyy-MM-dd"/>
</periodic-rotating-file-handler>
<logger category="com.arjuna">
<level name="WARN"/>
</logger>
<logger category="org.apache.tomcat.util.modeler">
<level name="WARN"/>
</logger>
<logger category="sun.rmi">
<level name="WARN"/>
</logger>
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
</subsystem>
<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jndi-name="java:jboss/datasources/ExampleDS" pool-name="H2DS" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:h2:mem:test;DB_CLOSE_DELAY=-1
</connection-url>
<driver>
h2
</driver>
<pool>
<prefill>
false
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
sa
</user-name>
<password>
sa
</password>
</security>
<validation>
<validate-on-match>
false
</validate-on-match>
<background-validation>
false
</background-validation>
<useFastFail>
false
</useFastFail>
</validation>
</datasource>
<datasource jndi-name="java:jboss/datasources/DB2" pool-name="DB2POOL" enabled="true" jta="true" use-java-context="true" use-ccm="true">
<connection-url>
jdbc:db2://xx.xx.x.x:xxx/XXXXXXX;DB_CLOSE_DELAY=-1
</connection-url>
<driver>
db2
</driver>
<pool>
<prefill>
false
</prefill>
<use-strict-min>
false
</use-strict-min>
<flush-strategy>
FailingConnectionOnly
</flush-strategy>
</pool>
<security>
<user-name>
XXXXX
</user-name>
<password>
XXXXX
</password>
</security>
<validation>
<validate-on-match>
false
</validate-on-match>
<background-validation>
false
</background-validation>
<useFastFail>
false
</useFastFail>
</validation>
</datasource>
<drivers>
<driver name="db2" module="com.ibm.db2">
<xa-datasource-class>
com.ibm.db2.jcc.DB2Driver
</xa-datasource-class>
</driver>
<driver name="h2" module="com.h2database.h2">
<xa-datasource-class>
org.h2.jdbcx.JdbcDataSource
</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
<subsystem xmlns="urn:jboss:domain:deployment-scanner:1.0">
<deployment-scanner name="default" path="deployments" scan-enabled="true" scan-interval="5000" relative-to="jboss.server.base.dir" deployment-timeout="60"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:ee:1.0"/>
<subsystem xmlns="urn:jboss:domain:ejb3:1.0"/>
<subsystem xmlns="urn:jboss:domain:infinispan:1.0" default-cache-container="hibernate">
<cache-container name="hibernate" default-cache="local-query">
<local-cache name="entity">
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="local-query">
<eviction strategy="LRU" max-entries="10000"/>
<expiration max-idle="100000"/>
</local-cache>
<local-cache name="timestamps">
<eviction strategy="NONE"/>
</local-cache>
</cache-container>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jaxrs:1.0"/>
<subsystem xmlns="urn:jboss:domain:jca:1.0">
<archive-validation enabled="false"/>
<bean-validation enabled="false"/>
<default-workmanager>
<short-running-threads blocking="true" allow-core-timeout="false">
<core-threads count="10" per-cpu="20"/>
<queue-length count="10" per-cpu="20"/>
<max-threads count="10" per-cpu="20"/>
<keepalive-time time="10" unit="SECONDS"/>
</short-running-threads>
<long-running-threads blocking="true" allow-core-timeout="false">
<core-threads count="10" per-cpu="20"/>
<queue-length count="10" per-cpu="20"/>
<max-threads count="10" per-cpu="20"/>
<keepalive-time time="10" unit="SECONDS"/>
</long-running-threads>
</default-workmanager>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jmx:1.0">
<jmx-connector server-binding="jmx-connector-server" registry-binding="jmx-connector-registry"/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:jpa:1.0">
<jpa default-datasource=""/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:naming:1.0"/>
<subsystem xmlns="urn:jboss:domain:osgi:1.0" activation="lazy">
<configuration pid="org.apache.felix.webconsole.internal.servlet.OsgiManager">
<property name="manager.root">
jboss-osgi
</property>
</configuration>
<properties>
<property name="org.jboss.osgi.system.modules">
org.apache.commons.logging,
org.apache.log4j,
org.jboss.as.osgi,
org.slf4j,
</property>
<property name="org.osgi.framework.system.packages.extra">
org.apache.commons.logging;version=1.1.1,
org.apache.log4j;version=1.2,
org.jboss.as.osgi.service;version=7.0,
org.jboss.osgi.deployment.interceptor;version=1.0,
org.jboss.osgi.spi.capability;version=1.0,
org.jboss.osgi.spi.util;version=1.0,
org.jboss.osgi.testing;version=1.0,
org.jboss.osgi.vfs;version=1.0,
org.slf4j;version=1.5.10,
</property>
<property name="org.osgi.framework.startlevel.beginning">
1
</property>
</properties>
<modules>
<module identifier="javaee.api"/>
<module identifier="org.jboss.logging"/>
<module identifier="org.apache.aries.util"/>
<module identifier="org.jboss.osgi.webconsole"/>
<module identifier="org.osgi.compendium"/>
<module identifier="org.apache.felix.log" startlevel="1"/>
<module identifier="org.jboss.osgi.logging" startlevel="1"/>
<module identifier="org.apache.felix.configadmin" startlevel="1"/>
<module identifier="org.jboss.as.osgi.configadmin" startlevel="1"/>
<module identifier="org.apache.aries.jmx" startlevel="2"/>
<module identifier="org.apache.felix.eventadmin" startlevel="2"/>
<module identifier="org.apache.felix.metatype" startlevel="2"/>
<module identifier="org.apache.felix.scr" startlevel="2"/>
<module identifier="org.apache.felix.webconsole" startlevel="2"/>
<module identifier="org.jboss.osgi.jmx" startlevel="2"/>
<module identifier="org.jboss.osgi.http" startlevel="2"/>
<module identifier="org.jboss.osgi.blueprint" startlevel="3"/>
<module identifier="org.jboss.osgi.webapp" startlevel="3"/>
<module identifier="org.jboss.osgi.xerces" startlevel="3"/>
</modules>
</subsystem>
<subsystem xmlns="urn:jboss:domain:remoting:1.0"/>
<subsystem xmlns="urn:jboss:domain:resource-adapters:1.0"/>
<subsystem xmlns="urn:jboss:domain:sar:1.0"/>
<subsystem xmlns="urn:jboss:domain:security:1.0">
<security-domains>
<security-domain name="other" cache-type="default">
<authentication>
<login-module code="UsersRoles" flag="required"/>
</authentication>
</security-domain>
</security-domains>
</subsystem>
<subsystem xmlns="urn:jboss:domain:threads:1.0"/>
<subsystem xmlns="urn:jboss:domain:transactions:1.0">
<core-environment>
<process-id>
<uuid/>
</process-id>
</core-environment>
<recovery-environment socket-binding="txn-recovery-environment" status-socket-binding="txn-status-manager"/>
<coordinator-environment default-timeout="300"/>
<object-store/>
</subsystem>
<subsystem xmlns="urn:jboss:domain:web:1.0" default-virtual-server="default-host">
<connector name="http" protocol="HTTP/1.1" socket-binding="http" scheme="http"/>
<virtual-server name="default-host" enable-welcome-root="true">
<alias name="localhost"/>
<alias name="example.com"/>
</virtual-server>
</subsystem>
<subsystem xmlns="urn:jboss:domain:weld:1.0"/>
</profile>
<interfaces>
<interface name="management">
<inet-address value="127.0.0.1"/>
</interface>
<interface name="public">
<inet-address value="127.0.0.1"/>
</interface>
</interfaces>
<socket-binding-group name="standard-sockets" default-interface="public">
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
<socket-binding name="jmx-connector-registry" port="1090"/>
<socket-binding name="jmx-connector-server" port="1091"/>
<socket-binding name="jndi" port="1099"/>
<socket-binding name="osgi-http" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
</socket-binding-group>
</server>
zanata
Outubro 29, 2012, 2:11pm
#18
André. De acordo com o “convencional”, está OK.
Dei uma olhada em um post em que o autor mostra algumas peculiaridades que estão bem diferentes da configuração que fez. O autor usa o DB2 como exemplo.
http://www.everyday-java.com/2011/11/jboss-as-7-creating-xa-datasources.html
Olha só como ficou a configuração do driver no caso dele.
<driver name="db2" module="com.ibm.db2.jdbc">
<driver-class>
com.ibm.db2.jcc.DB2Driver
</driver-class>
<xa-datasource-class>
com.ibm.db2.jcc.DB2XADataSource
</xa-datasource-class>
</driver>
[]s
Infelizmente não zanata. Resolvemos usar o JBOSS 6
abs