服务器是 classFish v2 
运运时的错误日志如下
naming.bind
Null component com.sun.appserv:type=JspMonitor,name=jsp,WebModule=//server/petstore,J2EEApplication=null,J2EEServer=server
WEB0207:在虚拟服务器 server 上启动 Web 上下文 StandardEngine[com.sun.appserv].StandardHost[server].StandardContext[/petstore] 时出现错误
java.lang.RuntimeException: java.lang.RuntimeException: javax.naming.NameNotFoundException
        at com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListener.java:193)
        at com.sun.enterprise.web.WebModuleListener.lifecycleEvent(WebModuleListener.java:168)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:143)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:5094)
        at com.sun.enterprise.web.WebModule.start(WebModule.java:326)
        at com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
        at com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
        at com.sun.appserv.management.util.misc.RunnableBase._submit(RunnableBase.java:176)
        at com.sun.appserv.management.util.misc.RunnableBase.submit(RunnableBase.java:192)
        at com.sun.enterprise.web.VirtualServer.startChildren(VirtualServer.java:1672)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1231)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:955)
        at com.sun.enterprise.web.LifecycleStarter.doRun(LifecycleStarter.java:58)
        at com.sun.appserv.management.util.misc.RunnableBase.runSync(RunnableBase.java:304)
        at com.sun.appserv.management.util.misc.RunnableBase.run(RunnableBase.java:341)
        at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
        at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
        at java.util.concurrent.FutureTask.run(FutureTask.java:138)
        at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
        at java.lang.Thread.run(Thread.java:619)
Caused by: java.lang.RuntimeException: javax.naming.NameNotFoundException
        at com.sun.enterprise.server.PersistenceUnitInfoImpl._getJtaDataSource(PersistenceUnitInfoImpl.java:283)
        at com.sun.enterprise.server.PersistenceUnitInfoImpl.<init>(PersistenceUnitInfoImpl.java:116)
        at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:121)
        at com.sun.enterprise.server.PersistenceUnitLoaderImpl.load(PersistenceUnitLoaderImpl.java:84)
        at com.sun.enterprise.web.WebModuleListener.loadPersistenceUnits(WebModuleListener.java:190)
        ... 20 more
Caused by: javax.naming.NameNotFoundException
        at com.sun.enterprise.naming.TransientContext.resolveContext(TransientContext.java:268)
        at com.sun.enterprise.naming.TransientContext.lookup(TransientContext.java:191)
        at com.sun.enterprise.naming.SerialContextProviderImpl.lookup(SerialContextProviderImpl.java:74)
        at com.sun.enterprise.naming.LocalSerialContextProviderImpl.lookup(LocalSerialContextProviderImpl.java:111)
        at com.sun.enterprise.naming.SerialContext.lookup(SerialContext.java:398)
        at javax.naming.InitialContext.lookup(InitialContext.java:392)
        at com.sun.enterprise.connectors.ConnectorResourceAdminServiceImpl.lookup(ConnectorResourceAdminServiceImpl.java:196)
        at com.sun.enterprise.connectors.ConnectorRuntime.lookupPMResource(ConnectorRuntime.java:1099)
        at com.sun.enterprise.server.PersistenceUnitInfoImpl.lookupPMDataSource(PersistenceUnitInfoImpl.java:294)
        at com.sun.enterprise.server.PersistenceUnitInfoImpl._getJtaDataSource(PersistenceUnitInfoImpl.java:281)
        ... 24 more
SMGT0007:已启用自管理规则服务
应用程序服务器启动完成。

解决方案 »

  1.   

    运行的时候发现如下错误: javax.naming.NameNotFoundException: Name jdbc is not bound in this Context。原来是Tomcat 5.5.x 的jdbc连接池配置和前面的都有改变,取消了ResourceParameters参数。下面是个例子 调试前的:<Context className="org.apache.catalina.core.StandardContext" cachingAllowed="true" charsetMapperClass="org.apache.catalina.util.CharsetMapper" cookies="true" crossContext="false" debug="0" displayName="OBS Client Replacement" docBase="D:\OBS_WORK\eclipse\workspace\obs\src\webapp" mapperClass="org.apache.catalina.core.StandardContextMapper" path="/OBS" privileged="false" reloadable="true" swallowOutput="false" useNaming="false" workDir="work\Standalone\localhost\OBS" wrapperClass="org.apache.catalina.core.StandardWrapper">
              <Resource name="jdbc/obs" scope="Shareable" type="javax.sql.DataSource"/>
              <ResourceParams name="jdbc/obs">
                <parameter>
                  <name>maxWait</name>
                  <value>5000</value>
                </parameter>
                <parameter>
                  <name>maxActive</name>
                  <value>4</value>
                </parameter>
                <parameter>
                  <name>password</name>
                  <value>HO2_CTF</value>
                </parameter>
                <parameter>
                  <name>url</name>
                  <value>jdbc:oracle:thin:@TG2SERVER:1521:NAGIRADB</value>
                </parameter>
                <parameter>
                  <name>driverClassName</name>
                  <value>oracle.jdbc.driver.OracleDriver</value>
                </parameter>
                <parameter>
                  <name>maxIdle</name>
                  <value>2</value>
                </parameter>
                <parameter>
                  <name>username</name>
                  <value>HO2_CTF</value>
                </parameter>
              </ResourceParams>
              <ResourceLink global="jdbc/obs" name="jdbc/obs" type="javax.sql.DataSource"/>
            </Context>调试后的:  
      
    <Context displayName="OBS Client Replacement" docBase="C:/ade/client_package_win/eclipse/workspace/obs/src/webapp" path="/obs" reloadable="true" workDir="work\Catalina\localhost\obs">
      
      <Resource name="jdbc/obs" type="javax.sql.DataSource"/>
      <ResourceParams name="jdbc/obs">
        <parameter>
          <name>url</name>
          <value>jdbc:oracle:thin:@TG2SERVER:1521:NAGIRADB</value>
        </parameter>
        <parameter>
          <name>password</name>
          <value>HO2_CTF</value>
        </parameter>
        <parameter>
          <name>maxActive</name>
          <value>4</value>
        </parameter>
        <parameter>
          <name>maxWait</name>
          <value>5000</value>
        </parameter>
        <parameter>
          <name>driverClassName</name>
          <value>oracle.jdbc.driver.OracleDriver</value>
        </parameter>
        <parameter>
          <name>username</name>
          <value>HO2_CTF</value>
        </parameter>
        <parameter>
          <name>maxIdle</name>
          <value>2</value>
        </parameter>
      </ResourceParams>
      <ResourceLink global="jdbc/obs" name="jdbc/obs" type="javax.sql.DataSource"/></Context>
      

  2.   

    liaoyi_ipanel 你好:
    这和我的问题存在着什么样的关系呢?麻烦你简单说明一下
      

  3.   

    你试试看你的javax.naming.NameNotFoundException 异常是不是这情况啊
      

  4.   

    不一样吧,没有这句话 Name jdbc is not bound in this Context