现在项目做的差不多了,有时间可以整理下问题,这里提到一个weblogic与tomcat服务器之间路径的问题,刚开始用的是tomcat开发,在第一次部署的时候遇到读取文件路径的问题,经理说以前遇到过好多次,解决方法就是直接写死了服务器的路径,然后找了一下获取工程路径的代码
package cn.cntomorrow.kxgk.util; import java.io.File; import java.net.URL; import javax.servlet.http.HttpServletRequest; import cn.cntomorrow.kxgk.base.ActionBase; public class GetPath{ private HttpServletRequest request; public HttpServletRequest getRequest() { return request; } public void setRequest(HttpServletRequest request) { this.request = request; } /** * 通过上下文来取工程路径 * * @return * @throws Exception */ public String getAbsolutePathByContext() throws Exception { String webPath = request.getSession().getServletContext().getRealPath("/"); webPath = webPath.replaceAll("[\\\\\\/]WEB-INF[\\\\\\/]classes[\\\\\\/]?", "/"); webPath = webPath.replaceAll("[\\\\\\/]+", "/"); webPath = webPath.replaceAll("%20", " "); if (webPath.matches("^[a-zA-Z]:.*?$")) { } else { webPath = "/" + webPath; } webPath += "/"; webPath = webPath.replaceAll("[\\\\\\/]+", "/"); return webPath; } /** * 通过类路径来取工程路径 * * @return * @throws Exception */ public String getAbsolutePathByClass() throws Exception { String webPath = getClass().getResource("/").getPath().replaceAll("^\\/", ""); webPath = webPath.replaceAll("[\\\\\\/]WEB-INF[\\\\\\/]classes[\\\\\\/]?", "/"); webPath = webPath.replaceAll("[\\\\\\/]+", "/"); webPath = webPath.replaceAll("%20", " "); if (webPath.matches("^[a-zA-Z]:.*?$")) { } else { webPath = "/" + webPath; } webPath += "/"; webPath = webPath.replaceAll("[\\\\\\/]+", "/"); return webPath; } public String getAbsolutePathByResource() throws Exception { URL url = request.getSession().getServletContext().getResource("/"); String path = new File(url.toURI()).getAbsolutePath(); if (!path.endsWith("\\") && !path.endsWith("/")) { path += File.separator; } return path; } public String init() { String webPath = null; try { webPath = getAbsolutePathByContext(); } catch (Exception e) { } // 在weblogic 11g 上可能无法从上下文取到工程物理路径,所以改为下面的 if (webPath == null) { try { webPath = getAbsolutePathByClass(); } catch (Exception e) { } } if (webPath == null) { try { webPath = getAbsolutePathByResource(); } catch (Exception e) { } } return webPath; } }
还有个问题是测试环境一定要相同,就是说weblogic的版本要相同,在做测试的时候出现的问题很不像版本的问题,可是查到最后查不出来换了个和服务器上版本相同的就好了,以后每次在部署到服务器上时,出现问题了先看版本,第一次部署经验不足,出现了数据源不一致的问题,本地是tomcat的数据源,而weblogic控制台部署启动时访问报错,表现为空指针,如果服务器是weblogic,本地不是的话,平时开发一定要考虑这个路径的问题
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-10-17 14:23:10