开发了一个bs的Web应用,服务用的是tomcat,在程序中读一个文件,doc = docB.parse("databaseConfig.xml");,可认的文件路径是c:\jakarta-tomcat-5.0.12\bin,想让它找服务里的相对路径,如何做呢,有人遇到过吗?

解决方案 »

  1.   

    楼主:
    用这个方法取路径
    /**
     * 取到目录为webRoot
     * 
     * @return
     */
    public String getWebRoot()
    {
        String webRoot="";
        String className = "org.apache.commons.dbcp.BasicDataSource";
         String classNameUrl="/org/apache/commons/dbcp/BasicDataSource.class";
         String temp=null;
            int i = 0;
            try {
             Class.forName(className);        
                java.net.URL classUrl = FilesUtil.class
                        .getResource(classNameUrl);
                temp = classUrl.getPath();
                temp = URLDecoder.decode(temp);
         //如果是windows则从第六个字符开始,否则从第五个字符开始
                if ("Win".equalsIgnoreCase(System.getProperty("os.name").substring(
                        0, 3))) {
                    i = 6;
                } else {
                    i = 5;
                }
                webRoot = temp.substring(i, temp.indexOf("WEB-INF") - 1);
            } catch (Exception e) {
             Logger.debug("取得webRoot出错:", e);
             webRoot = "";
            }
    }
    用这个函数后你可以取得你项目的Webroot,其其它就什么都好解决了!
    建议楼主把你这个数据库配置文件放到web-inf下面.
      

  2.   

    谢谢回复!
    在网上找到了一个贴子:
    Java WebService SDK里一般都对Servlet部分进行了简单封装, 
    但都是能得到 HttpServletRequest 的, 如果你是用 apache Axis 可以这样获得: MessageContext mc = MessageContext.getCurrentContext(); 
    HttpServletRequest request = (HttpServletRequest) mc.getProperty(HTTPConstants.MC_HTTP_SERVLETREQUEST); 
    String root=request.getContextPath();
    下面我也不继续写了吧。。这个正合适我,试过,也好用,作者说下面不用写了,可下面就不会了,请大家帮续上!
      

  3.   

    docB.parse("/databaseConfig.xml");加一个/ 默认到WEB-INF/class