2010-10-28 54 views
2

有人能指点我或者发布一个为JBoss 5.1.0.GA配置数据源的例子吗?如何在JBoss AS 5.1.0.GA中配置JDBC数据源?

当我尝试使用JNDI在JBoss 5.1.0.GA中将数据源连接到我的Web应用程序时,出现以下错误。

启动失败由于先前的错误了java.lang.RuntimeException:映射名称需要部署JDBC /乔斯乔斯服务-1.0.0-SNAPSHOT.war

/WEB -INF/web.xml中包含以下资源引用:

<resource-ref> 
    <res-ref-name>jdbc/jos</res-ref-name> 
    <res-type>javax.sql.DataSource</res-type> 
    <res-auth>Container</res-auth> 
</resource-ref> 

我已经配置/META-INF/jboss-web.xml如下:

<?xml version="1.0" encoding="UTF-8"?> 
<jboss-web 
    xmlns="http://www.jboss.com/xml/ns/javaee" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation=" 
     http://www.jboss.com/xml/ns/javaee 
     http://www.jboss.org/j2ee/schema/jboss-web_5_1.xsd" 
    version="5.1"> 
    <context-root>/services</context-root> 
    <resource-ref> 
     <res-ref-name>jdbc/jos</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <jndi-name>java:jos</jndi-name> 
    </resource-ref> 
</jboss-web> 

而且乔斯 - ds.xml中文件定义数据源如下:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE datasources 
    PUBLIC "-//JBoss//DTD JBOSS JCA Config 5.0//EN" 
    "http://www.jboss.org/j2ee/dtd/jboss-ds_5_0.dtd"> 
<datasources> 
    <xa-datasource> 
     <jndi-name>jos</jndi-name> 
     <xa-datasource-class>com.mysql.jdbc.jdbc2.optional.MysqlXADataSource</xa-datasource-class> 
     <xa-datasource-property name="URL">${ie.courts.jos.datasource.url}</xa-datasource-property> 
     <user-name>${ie.courts.jos.datasource.username}</user-name> 
     <password>${ie.courts.jos.datasource.password}</password> 
     <transaction-isolation>TRANSACTION_READ_COMMITTED</transaction-isolation> 
     <min-pool-size>5</min-pool-size> 
     <max-pool-size>100</max-pool-size> 
     <blocking-timeout-millis>2000</blocking-timeout-millis> 
     <idle-timeout-minutes>2</idle-timeout-minutes> 
     <track-connection-by-tx /> 
     <valid-connection-checker-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker</valid-connection-checker-class-name> 
     <exception-sorter-class-name>org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter</exception-sorter-class-name> 
     <!--new-connection-sql></new-connection-sql--> 
     <!--check-valid-connection-sql></check-valid-connection-sql--> 
     <metadata> 
      <type-mapping>mySQL</type-mapping> 
     </metadata> 
    </xa-datasource> 
</datasources> 

堆栈跟踪,我得到的是:

 
14:17:17,573 ERROR [StandardContext] Context [/jos-services-1.0.0-SNAPSHOT] startup failed due to previous errors java.lang.RuntimeException: mapped-name is required for jdbc/jos of deployment jos-services-1.0.0-SNAPSHOT.war 
     at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXmlResourceRefs(WebResourceHandler.java:178) 
     at org.jboss.web.tomcat.service.injection.WebResourceHandler.loadXml(WebResourceHandler.java:327 
     at org.jboss.web.tomcat.service.TomcatInjectionContainer.processMetadata(TomcatInjectionContainer.java:550) 
     at org.jboss.web.tomcat.service.WebCtxLoader.start(WebCtxLoader.java:158) 
     at org.apache.catalina.core.StandardContext.start(StandardContext.java:4272) 
     at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeployInternal(TomcatDeployment.java:310)> 
     at org.jboss.web.tomcat.service.deployers.TomcatDeployment.performDeploy(TomcatDeployment.java:142) 
     at org.jboss.web.deployers.AbstractWarDeployment.start(AbstractWarDeployment.java:461) 
     at org.jboss.web.deployers.WebModule.startModule(WebModule.java:118) 
     at org.jboss.web.deployers.WebModule.start(WebModule.java:97) 
     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
     at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
     at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
     at java.lang.reflect.Method.invoke(Method.java:592) 
     at org.jboss.mx.interceptor.ReflectedDispatcher.invoke(ReflectedDispatcher.java:157) 
     at org.jboss.mx.server.Invocation.dispatch(Invocation.java:96) 
     at org.jboss.mx.server.Invocation.invoke(Invocation.java:88) 
     at org.jboss.mx.server.AbstractMBeanInvoker.invoke(AbstractMBeanInvoker.java:264) 
     at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:668) 
     at org.jboss.system.microcontainer.ServiceProxy.invoke(ServiceProxy.java:206) 
     at $Proxy38.start(Unknown Source) 
     at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:42) 
     at org.jboss.system.microcontainer.StartStopLifecycleAction.installAction(StartStopLifecycleAction.java:37) 
     at org.jboss.dependency.plugins.action.SimpleControllerContextAction.simpleInstallAction(SimpleControllerContextAction.java:62) 
     at org.jboss.dependency.plugins.action.AccessControllerContextAction.install(AccessControllerContextAction.java:71) 
     at org.jboss.dependency.plugins.AbstractControllerContextActions.install(AbstractControllerContextActions.java:51) 
     at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) 
     at org.jboss.system.microcontainer.ServiceControllerContext.install(ServiceControllerContext.java:286) 
     at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631) 
     at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553) 
     at org.jboss.system.ServiceController.doChange(ServiceController.java:688) 
     at org.jboss.system.ServiceController.start(ServiceController.java:460) 
     at org.jboss.system.deployers.ServiceDeployer.start(ServiceDeployer.java:163) 
     at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:99) 
     at org.jboss.system.deployers.ServiceDeployer.deploy(ServiceDeployer.java:46) 
     at org.jboss.deployers.spi.deployer.helpers.AbstractSimpleRealDeployer.internalDeploy(AbstractSimpleRealDeployer.java:62) 
     at org.jboss.deployers.spi.deployer.helpers.AbstractRealDeployer.deploy(AbstractRealDeployer.java:50) 
     at org.jboss.deployers.plugins.deployers.DeployerWrapper.deploy(DeployerWrapper.java:171) 
     at org.jboss.deployers.plugins.deployers.DeployersImpl.doDeploy(DeployersImpl.java:1439) 
     at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1157) 
     at org.jboss.deployers.plugins.deployers.DeployersImpl.doInstallParentFirst(DeployersImpl.java:1178) 
     at org.jboss.deployers.plugins.deployers.DeployersImpl.install(DeployersImpl.java:1098) 
     at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) 
     at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631) 
     at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553) 
     at org.jboss.deployers.plugins.deployers.DeployersImpl.process(DeployersImpl.java:781) 
     at org.jboss.deployers.plugins.main.MainDeployerImpl.process(MainDeployerImpl.java:702) 
     at org.jboss.system.server.profileservice.repository.MainDeployerAdapter.process(MainDeployerAdapter.java:117) 
     at org.jboss.system.server.profileservice.repository.ProfileDeployAction.install(ProfileDeployAction.java:70) 
     at org.jboss.system.server.profileservice.repository.AbstractProfileAction.install(AbstractProfileAction.java:53) 
     at org.jboss.system.server.profileservice.repository.AbstractProfileService.install(AbstractProfileService.java:361) 
     at org.jboss.dependency.plugins.AbstractControllerContext.install(AbstractControllerContext.java:348) 
     at org.jboss.dependency.plugins.AbstractController.install(AbstractController.java:1631) 
     at org.jboss.dependency.plugins.AbstractController.incrementState(AbstractController.java:934) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:1082) 
     at org.jboss.dependency.plugins.AbstractController.resolveContexts(AbstractController.java:984) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:822) 
     at org.jboss.dependency.plugins.AbstractController.change(AbstractController.java:553) 
     at org.jboss.system.server.profileservice.repository.AbstractProfileService.activateProfile(AbstractProfileService.java:306) 
     at org.jboss.system.server.profileservice.ProfileServiceBootstrap.start(ProfileServiceBootstrap.java:271) 
     at org.jboss.bootstrap.AbstractServerImpl.start(AbstractServerImpl.java:461) 
     at org.jboss.Main.boot(Main.java:221) 
     at org.jboss.Main$1.run(Main.java:556) 
     at java.lang.Thread.run(Thread.java:595) 
+0

有关此问题的任何更新? – Rudy 2011-12-19 06:18:17

+0

我最终将项目切换到JBoss AS6。这是一个概念验证,所以我从客户那里获得了一些改变平台的灵活性。 – 2011-12-19 14:58:39

回答

5

该错误是误导性的,至少在我的情况下,实际的罪魁祸首作为XSD版本。将XSD 5.1更改为DTD 5.0,不再抱怨mapped-name

下面是WEB-INF/jboss-web.xml我米现在使用:(的jboss-web.xml中需要是你的webapp的WEB-INF

<?xml version="1.0"?>                                
<!DOCTYPE jboss-web PUBLIC 
     "-//JBoss//DTD Web Application 5.0//EN" 
     "http://www.jboss.org/j2ee/dtd/jboss-web_5_0.dtd"> 
<jboss-web> 
<context-root>/context_name</context-root> 
    <resource-ref> 
     <res-ref-name>jdbc/jndi_name</res-ref-name> 
     <res-type>javax.sql.DataSource</res-type> 
     <jndi-name>java:jndi_name</jndi-name> 
    </resource-ref> 
</jboss-web> 

虽然这是一些什么老问题了,我为提我怎么解决了与JBoss 5.1.0 GA相同的问题,以便有人可能会发现它有用

0

Souldn't您使用这样的JNDI名称(在jboss-web.xml文件中):

<jndi-name>java:/jos</jndi-name> 
相关问题