1、简介 委派模式对外隐藏具体实现细节,将任务委派给具体的实现类,spring mvc的DispatcherServlet就是使用了委派模式,根据不同的路径,来调用具体对应的HandlerAdapter。 例如,一个部门由部门经理,程序员和设计师三个角色,程序员和设计师负责具体的工作,部门经理根据不同的任务来选择程序员或者设计师来执行。 2、建立任务执行者 public interface User { public void work(); } public class Programmer implements User { @Override public void work() { System.out.println("java工程师开始工作"); } } public class Designer implements User { @Override public void work() { System.out.println("架构设计师开始工作"); } } 3、建立任务分发者 public class DepartmentManager { private .... 有更新! 委派模式 程序人生
简介 nio主要是通过WatchService、Watchkey和Path来实现文件的监控; 代码实现 public class FileMonitor { private WatchService watcher; public FileMonitor(String directory) throws IOException { watcher = FileSystems.getDefault().newWatchService(); Path path = Paths.get(directory); path.register(watcher, ENTRY_CREATE, ENTRY_MODIFY,ENTRY_DELETE); } @SuppressWarnings("InfiniteLoopStatement") public void watchFile() throws InterruptedException{ while (true) { WatchKey key = watcher.take(); for (WatchEvent<?> event : key.... 有更新! nio监控文件变化 程序人生
mvn install:install-file -Dfile=jar包的路径 -DgroupId=groupId -DartifactId=artifactId -Dversion=版本号 -Dpackaging=jar 执行后,再maven中添加依赖即可; 再改造老项目的时候,会遇到一种情况,项目的开发者再使用jar包的时候,没有使用maven(或其他依赖软件)做依赖管理,此时,若要对老项目进行改造,这些依赖的引入就成了一个问题,如果是常见的类,大概都能判断使用的是哪个依赖,直接引入,但是有些项目使用的依赖很小众,甚至再maven仓库中都找不到,此时就需要自己安装到本地仓库,此时,我么可以将所有的jar解压到本地的一个文件夹中,然后使用everything搜索哪个jar中含有自己的类,就把这个jar安装到本地仓库,这样一个一个的对着找。 例如: 我们现在有个一类不知道是属于哪个jar包的 到everything中搜索结果如下: 发现第一个class所在的包,路径也和代码中的匹配,就将这个依赖,安装到本地仓库,再引入就可以了 有更新! maven安装jar到本地 程序人生
今天接到任务,需要对一个web项目进行结构整改,该项目运行再tomcat中,启动的时候,一个报端口被占用 运行命令查看1099端口,发现没有程序再使用这个端口 netstat -ano | findstr 1099 最后发现是因为自己装了一个docker,启用了hype-v占用了端口 netsh interface ipv4 show excludedportrange protocol=tcp 此时更换一个没有被占用的端口、或者关闭hype-v、或者让hype-v不占用这个端口都是可行的。 可以使用下面的命令开放该端口: netsh int ipv4 add excludedportrange protocol=tcp startport=8080 numberofports=1 参考:https://github.com/docker/for-win/issues/3171 有更新! hype-v占用端口,导致idea无法运行tomcat应用 程序人生
1、错误信息 2、问题跟踪及处理 可以看到,这个方法传递了一个Class对象和类加载器和一个字段给clearMap方法 进入clearMap方法,方法根据class对象获取属性,此时报出了属性找不到的错误 打开tomcat的源码查看这个被反射的类org.apache.catalina.loader.WebappClassLoader(tomcat源码地址) 在这个类中发现,他继承了org.apache.catalina.loader.WebappClassLoaderBase,自己本身没有定义属性 进入WebappClassLoaderBase类中,可以找到resourceEntries字段 查看WebappClassLoaderBase的注释信息发现从7.0.64往后的版本,添加了WebappClassLoaderBase用来作为类加载器 此时有两个解决方案,一是对structs版本升级,但是这样的话,对应的其他依赖版本也要升级,代价太大,第二个方法较为简单,直接更换tomcat版本使其版本号<7.0.64即可,我换了7.0.63就正常了 有更新! struct2在tomcat运行报错--java.lang.NoSuchFieldException resourceEntries 程序人生
1、web.xml中指定位置 此处,我只修改了struts.xml文件的位置,structs默认是从WEB-INF的classes目录下加载配置文件的,对应打包后的路径,自己根据需求修改即可 <!-- struts配置 --> <filter> <filter-name>struts</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> <init-param> <param-name>config</param-name> <param-value>struts-default.xml,struts-plugin.xml,struts/struts.xml</param-value> </init-param> </filter> <filter-map.... 有更新! struts修改配置文件位置 程序人生