﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-一梦十年</title><link>http://www.blogjava.net/demon/</link><description>一梦十年</description><language>zh-cn</language><lastBuildDate>Thu, 30 Apr 2026 08:16:46 GMT</lastBuildDate><pubDate>Thu, 30 Apr 2026 08:16:46 GMT</pubDate><ttl>60</ttl><item><title>关于获取Tomcat和WebSphere的classes目录的绝对路径的问题</title><link>http://www.blogjava.net/demon/archive/2011/08/17/356722.html</link><dc:creator>一梦十年</dc:creator><author>一梦十年</author><pubDate>Wed, 17 Aug 2011 08:51:00 GMT</pubDate><guid>http://www.blogjava.net/demon/archive/2011/08/17/356722.html</guid><wfw:comment>http://www.blogjava.net/demon/comments/356722.html</wfw:comment><comments>http://www.blogjava.net/demon/archive/2011/08/17/356722.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/demon/comments/commentRss/356722.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/demon/services/trackbacks/356722.html</trackback:ping><description><![CDATA[1，有一个类 ResourceRender ，所在的 package 是 com.daston.resource
2，在 /web-inf/classes 目录下有一个 abc.xml 文件，需要在某个时候装载此配置文件
3，这个WEB应用的classpath假设为 /appsd

一般的做法：
String classPathName = ResourceRender.class.getResource("/").getPath();

从理论上看，这样，应该可以直接得到 classes 的绝对路径；而在事实上，Tomcat 是可以这样获得的；
而在 WebSphere 部署里面，情况并不是这样，这样得到的路径是 WebSphere 的loader所在的目录，比如 /work/loader，而不是 /web-inf/classes。

针对这种情况，可以考虑这样的做法：
String classPathName = ResourceRender.class.getResource("").getPath();

这样做，classPathName 是这样的，/web-inf/classes/com/daston/resource/ ；
当然，这样根据 ResourceRender 的 package 将后缀去掉，从而获得classes 的绝对路径。
这样的测试几乎在 Tomcat 和 WebSphere 都是成功的。

可是，今天打包部署系统时，问题出来了，通过调试，返回的路径竟然是 %Tomcat%\work\Catalina\localhost\appsd\loader ；
系统提示找不到指定的文件 %Tomcat%\work\Catalina\localhost\appsd\loader\abc.xml

经过反复调试和验证，最终问题的原因找到了。

原来，我们打包部署的文件是将class文件打包到jar文件中，因此在，classes目录下是不会存在 /com/daston/resource 这些目录的，
所有的JAR文件都被打包到 jar 文件中了。

经过测试，发现，只要classes目录下有/com/daston/resource 这个目录，不一定有真正的 ResourceRender.class 文件，
上面的代码执行结果都是预期的结果，但是，一旦把目录删除或改名，上面代码执行结果就是 Tomcat 的work loader 目录。

因此，为了统一解决这样的问题，必须使用新的方式来实现：
URL url = ResourceRender.class.getClassLoader().getResource("abc.xml");        
String classPathName = url.getPath();
int endingIndex = classPathName.length()-"abc.xml".length();
classPathName = classPathName.substring(0, endingIndex);
转自 http://hi.baidu.com/lontoo/blog/item/a264b525f315bb6434a80fa7.html<img src ="http://www.blogjava.net/demon/aggbug/356722.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/demon/" target="_blank">一梦十年</a> 2011-08-17 16:51 <a href="http://www.blogjava.net/demon/archive/2011/08/17/356722.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>在struts2中使用拦截器（Interceptor）控制登录和权限[转]</title><link>http://www.blogjava.net/demon/archive/2010/04/27/319541.html</link><dc:creator>一梦十年</dc:creator><author>一梦十年</author><pubDate>Tue, 27 Apr 2010 15:10:00 GMT</pubDate><guid>http://www.blogjava.net/demon/archive/2010/04/27/319541.html</guid><wfw:comment>http://www.blogjava.net/demon/comments/319541.html</wfw:comment><comments>http://www.blogjava.net/demon/archive/2010/04/27/319541.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/demon/comments/commentRss/319541.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/demon/services/trackbacks/319541.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 在jsp servlet中我们通常使用Servlet Filter控制用户是否登入， 是否有权限转到某个页面。在struts2中我们应该会想到他的拦截器（Interceptor）， Interceptor在struts2中起着非常重要的作用。 很多struts2中的功能都是使用Interceptor实现的。 需求：简单的登入界面，让用户输入用户名、密码、记住密码（remember me）。 如果用...&nbsp;&nbsp;<a href='http://www.blogjava.net/demon/archive/2010/04/27/319541.html'>阅读全文</a><img src ="http://www.blogjava.net/demon/aggbug/319541.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/demon/" target="_blank">一梦十年</a> 2010-04-27 23:10 <a href="http://www.blogjava.net/demon/archive/2010/04/27/319541.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Struts2 拦截器总结（内置和新建）[转] </title><link>http://www.blogjava.net/demon/archive/2010/04/27/319538.html</link><dc:creator>一梦十年</dc:creator><author>一梦十年</author><pubDate>Tue, 27 Apr 2010 15:03:00 GMT</pubDate><guid>http://www.blogjava.net/demon/archive/2010/04/27/319538.html</guid><wfw:comment>http://www.blogjava.net/demon/comments/319538.html</wfw:comment><comments>http://www.blogjava.net/demon/archive/2010/04/27/319538.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/demon/comments/commentRss/319538.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/demon/services/trackbacks/319538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 拦截器的类已经定义在特殊的配置文件中，这个配置文件的名字就叫做struts-default.xml,如果你继承了struts-default默认的包名，那你就可以使用这些拦截器了，否则你必须在你自己的包中定义拦截器在&lt;interceptors&gt;中进行定义。 下面是Struts2中的内置拦截器介绍 Interceptor Name Description Alias Intercepto...&nbsp;&nbsp;<a href='http://www.blogjava.net/demon/archive/2010/04/27/319538.html'>阅读全文</a><img src ="http://www.blogjava.net/demon/aggbug/319538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/demon/" target="_blank">一梦十年</a> 2010-04-27 23:03 <a href="http://www.blogjava.net/demon/archive/2010/04/27/319538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>J2EE面试题</title><link>http://www.blogjava.net/demon/archive/2010/01/01/307978.html</link><dc:creator>一梦十年</dc:creator><author>一梦十年</author><pubDate>Fri, 01 Jan 2010 05:48:00 GMT</pubDate><guid>http://www.blogjava.net/demon/archive/2010/01/01/307978.html</guid><wfw:comment>http://www.blogjava.net/demon/comments/307978.html</wfw:comment><comments>http://www.blogjava.net/demon/archive/2010/01/01/307978.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/demon/comments/commentRss/307978.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/demon/services/trackbacks/307978.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: &nbsp;J2EE相关基础知识&nbsp;1、面向对象的特征有哪些方面&nbsp;1．&nbsp; 抽象：抽象就是忽略一个主题中与当前目标无关的那些方面，以便更充分地注意与当前目标有关的方面。抽象并不打算了解全部问题，而只是选择其中的一部分，暂时不用部分细节。抽象包括两个方面，一是过程抽象，二是数据抽象。2.继承：继承是一种联结类的层次模型，并且允许和鼓励类的重用，它...&nbsp;&nbsp;<a href='http://www.blogjava.net/demon/archive/2010/01/01/307978.html'>阅读全文</a><img src ="http://www.blogjava.net/demon/aggbug/307978.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/demon/" target="_blank">一梦十年</a> 2010-01-01 13:48 <a href="http://www.blogjava.net/demon/archive/2010/01/01/307978.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>