Java 有人能帮助我理解我的上下文文件是如何在Tomcat中使用的以及如何从我的程序中调用的吗?

Java 有人能帮助我理解我的上下文文件是如何在Tomcat中使用的以及如何从我的程序中调用的吗?,java,mysql,eclipse,struts2,tomcat7,Java,Mysql,Eclipse,Struts2,Tomcat7,我正在使用Eclipse用Java编写一个web应用程序,使用Struts2框架连接到Tomcat7服务器,该服务器与MySQL数据库通信。我让程序工作,但我的代码中硬编码了连接的值。我想使用context.xml或我创建的一个来连接,这样它就可以移植,并且不需要连接的登录页面。我没有完全遵循上下文配置。我创建了一个名为OS1.xml的上下文xml文件,并将其放在C:\Users\Rich\Tomcat\conf\Catalina\localhost中。该应用程序从webapps目录C:\Use

我正在使用Eclipse用Java编写一个web应用程序,使用Struts2框架连接到Tomcat7服务器,该服务器与MySQL数据库通信。我让程序工作,但我的代码中硬编码了连接的值。我想使用context.xml或我创建的一个来连接,这样它就可以移植,并且不需要连接的登录页面。我没有完全遵循上下文配置。我创建了一个名为OS1.xml的上下文xml文件,并将其放在C:\Users\Rich\Tomcat\conf\Catalina\localhost中。该应用程序从webapps目录C:\Users\Rich\Tomcat\webapps启动,其中包含OS1.war文件

有人能帮助我理解我的上下文文件是如何在Tomcat中使用的以及如何从我的程序中调用的吗

这是我的ConnectionModel类中应该调用它的部分

public class ConnectionModel {  

public ArrayList<Table> Systems() throws SQLException                       {               
    Connection con = null;          
    ResultSet rs = null;   
    try {
        InitialContext ctx = new InitialContext();
        DataSource ds = (DataSource) ctx.lookup("java:comp/env/jdbc/os");

        con = ds.getConnection();           
公共类连接模型{
公共ArrayList Systems()引发SQLException{
连接con=null;
结果集rs=null;
试一试{
InitialContext ctx=新的InitialContext();
DataSource ds=(DataSource)ctx.lookup(“java:comp/env/jdbc/os”);
con=ds.getConnection();
这是我的web.xml文件

<display-name>OS1</display-name>

<welcome-file-list>
    <welcome-file>enter.jsp</welcome-file>      
</welcome-file-list>

<filter>
    <filter-name>struts2</filter-name>
     <filter-class>
                  org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
             </filter-class>
</filter>

<filter-mapping>
    <filter-name>struts2</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>   

<resource-ref>
    <description>MySQL Datasource </description>
    <res-ref-name>jdbc/os</res-ref-name>
    <res-type>javax.sql.DataSource</res-type>
    <res-auth>Container</res-auth>
</resource-ref> 
OS1
enter.jsp
支柱2
org.apache.struts2.dispatcher.ng.filter.strutspreadexecutefilter
支柱2
/*
MySQL数据源
jdbc/os
javax.sql.DataSource
容器
这是我的上下文xml文件,名为OS1.xml,位于
C:\Users\Rich\Tomcat\conf\Catalina\localhost

<Context docBase="C:/Users/Rich/Tomcat/webapps/OS1.war" path="/OS1" reloadable="true">
<Resource>
        name="jdbc/os"
            auth="Container"
            type="javax.sql.DataSource"
            maxActive="100"
            maxIdle="30"
            maxWait="10000"
            username="someone"
            password="password"
            driverClassName="com.mysql.jdbc.Driver"                                 

    url="jdbc:mysql://localhost:3306/os"
</Resource>
</Context>

name=“jdbc/os”
auth=“容器”
type=“javax.sql.DataSource”
maxActive=“100”
maxIdle=“30”
maxWait=“10000”
用户名=“某人”
password=“password”
driverClassName=“com.mysql.jdbc.Driver”
url=“jdbc:mysql://localhost:3306/os"
我得到下面的错误

WARNING: A docBase C:\Users\Rich\Tomcat\webapps\OS1.war inside the host appBase has
been specified, and will be ignored

Jun 05, 2013 12:43:54 PM org.apache.catalina.deploy.NamingResources initInternal
WARNING: Failed to create MBean for naming resource [null]
java.lang.NullPointerException
at javax.management.ObjectName.quote(ObjectName.java:1833)
at org.apache.catalina.mbeans.MBeanUtils.createObjectName(MBeanUtils.java:569)
at org.apache.catalina.mbeans.MBeanUtils.createMBean(MBeanUtils.java:183)
at 
org.apache.catalina.deploy.NamingResources.initInternal(NamingResources.java:934)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
at 
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5163)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at 
org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Jun 05, 2013 12:43:54 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component 
 [StandardEngine[Catalina].StandardHost

[localhost].StandardContext[/OS1]]
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at 
org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.NullPointerException
at java.util.StringTokenizer.<init>(StringTokenizer.java:199)
at java.util.StringTokenizer.<init>(StringTokenizer.java:221)
at
org.apache.catalina.core.NamingContextListener.createSubcontexts(NamingContextListener.
java:1272)
at 
org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener.
java:1083)
at

org.apache.catalina.core.NamingContextListener.createNamingContext(
NamingContextListener.java:672)
at org.apache.catalina.core.NamingContextListener.lifecycleEvent(
NamingContextListener.java:271)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(
LifecycleSupport.java:119)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.core.StandardContext.startInternal(
StandardContext.java:5269)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
... 11 more

Jun 05, 2013 12:43:54 PM org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor
    C:\Users\Rich\Tomcat\conf\Catalina\localhost\OS1.xml
java.lang.IllegalStateException: ContainerBase.addChild: start:
 org.apache.catalina.LifecycleException: Failed to 

start component
[StandardEngine[Catalina].StandardHost[localhost].StandardContext[/OS1]]
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:904)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
at    org.apache.catalina.startup.HostConfig$DeployDescriptor.run(
HostConfig.java:1636)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)
警告:主机appBase中的docBase C:\Users\Rich\Tomcat\webapps\OS1.war已
已指定,将被忽略
2013年6月5日下午12:43:54 org.apache.catalina.deploy.NamingResources initInternal
警告:无法为命名资源创建MBean[null]
java.lang.NullPointerException
位于javax.management.ObjectName.quote(ObjectName.java:1833)
位于org.apache.catalina.mbeans.MBeanUtils.createObjectName(MBeanUtils.java:569)
位于org.apache.catalina.mbeans.MBeanUtils.createMBean(MBeanUtils.java:183)
在
org.apache.catalina.deploy.NamingResources.initInternal(NamingResources.java:934)
位于org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:139)
在
org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5163)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
位于org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
在
org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)中
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:722)
2013年6月5日下午12:43:54 org.apache.catalina.core.ContainerBase addChildInternal
严重:ContainerBase.addChild:开始:
org.apache.catalina.LifecycleException:无法启动组件
[StandardEngine[Catalina].StandardHost
[localhost].StandardContext[/OS1]]
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:154)
位于org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
位于org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
位于org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
位于org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:657)
在
org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1636)
位于java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
位于java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
在java.util.concurrent.FutureTask.run(FutureTask.java:166)中
位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
位于java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
运行(Thread.java:722)
原因:java.lang.NullPointerException
位于java.util.StringTokenizer。(StringTokenizer.java:199)
位于java.util.StringTokenizer。(StringTokenizer.java:221)
在
org.apache.catalina.core.NamingContextListener.createSubContext(NamingContextListener。
爪哇:1272)
在
org.apache.catalina.core.NamingContextListener.addResource(NamingContextListener)。
爪哇:1083)
在
org.apache.catalina.core.NamingContextListener.createNamingContext(
NamingContextListener.java:672)
位于org.apache.catalina.core.NamingContextListener.LifecycleeEvent(
NamingContextListener.java:271)
位于org.apache.catalina.util.LifecyclesSupport.fireLifecycleEvent(
LifecycleSupport.java:119)
位于org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
位于org.apache.catalina.core.StandardContext.startInternal(
StandardContext.java:5269)
位于org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
…还有11个
2013年6月5日下午12:43:54 org.apache.catalina.startup.HostConfig部署描述符
严重:
<Context docBase="C:/Users/Rich/Tomcat/webapps/OS1.war" path="/OS1" reloadable="true">
<Resource
        name="jdbc/os"
        auth="Container"
        type="javax.sql.DataSource"
        maxActive="100"
        maxIdle="30"
        maxWait="10000"
        username="someone"
        password="password"
        driverClassName="com.mysql.jdbc.Driver"                                 
    url="jdbc:mysql://localhost:3306/os"
/>
java.lang.NullPointerException
    at javax.management.ObjectName.quote(ObjectName.java:1833)