JavaEE技术
zollty
这个作者很懒,什么都没留下…
展开
-
修改jar包文件,重新打包jar
一、网上搜到的下列替换方案都不行:1、直接用WinRAR拖拽替换jar包内文件失败,报错:压缩文件已损坏。我以前替换成功过,但是启动的时候报错。这种方式可能会伤害到jar包的一些标识。2、解压jar包,然后使用jar命令(比如jar -uvf)重新打包失败,能打包,但是以可执行文件(./xxx.jar start)运行时提示:jar: cannot execute binary file最终我用下面方案成功了:将jar包文件解压,导入到maven项目的ma...原创 2020-12-29 16:43:41 · 3204 阅读 · 0 评论 -
Dubbo泛化调用时参数为泛型对象
阿里开源项目就是坑,官方文档(链接)上没有任何说明,只能自己看源代码摸索了。具体方法如下:举例说明,例如: public void add(Pager<User[]> users) // 其中 class Pager { int size; User[] data; } class User { String name; } 传参时这么写: /...原创 2020-12-29 16:39:47 · 2502 阅读 · 0 评论 -
Spring AOP AspectJ 切面表达式高级用法
一、Spring AOP 配置首先,明白一点,Spring的AOP代理,分为JDK动态代理和Cglib动态代理,这两种代理的实现方式不一样,他们针对同一Aspect的配置效果也可能不一样。 JDK的动态代理,只能代理接口,无法代理非接口的方法。 Cglib动态代理,采用的是继承代理对象的方法,所以可以代理非private的所有方法。 Spring和AspectJ的关系: AspectJ是Eclipse基金会的一个动态代理框架(官方网站为:http://www....原创 2020-12-21 15:46:02 · 725 阅读 · 0 评论 -
Tomcat启动卡住、无法访问问题解决思路
现象如下:1、项目启动日志正常,Spring或者MVC框架也正常加载完成。但是对外无法访问,何解?2、Tomcat无法正常关闭,因为shutdown port不可用。只能kill。3、Jstack内容太多,很难查出问题,但基本上可以确认项目所有bean、线程都是正常的。4、注意到一个细节,Tomcat正常启动和奇怪异常之间,日志最后有一点差别:正常启动后,tomcat最后会打印如下 Aug 10, 2020 1:47:03 PM org.apache.coyote.Abstr...原创 2020-12-17 15:03:13 · 4452 阅读 · 1 评论 -
The valid characters are defined in RFC 7230 and RFC 3986
针对Tomcat Server报错: “The valid characters are defined in RFC 7230 and RFC 3986”解决方案大全:1、针对于SpringBoot jar启动的项目:直接在yml中配置: server.tomcat.relaxedQueryChars=<,>, [,\,],^,`,{,|,} 2、针对tomcat war包部署的任何项目:修改server.xml文件,如下: <..原创 2020-12-17 15:01:15 · 725 阅读 · 0 评论 -
Log4j blocked 线程阻塞问题
我的zoa项目中,一直使用的是log4j 1.x版本,由于简单,一直没更换,也没怀疑过它的问题。偶尔有两次,zoa在使用过程中假死的情况,不能响应任何请求,包括正常的关闭都无法进行。于是我使用 jvm工具分析了JVM的情况,最终定位为 log4j引起的线程 blocked,不算是死锁,但是所以请求都会调用log4j,而log4j又无法正常执行,所以 所有请求都会 block。线程堆栈信息片段 形如: "qtp1056944384-232"prio=10tid=0x00...原创 2020-08-29 16:40:40 · 4334 阅读 · 7 评论 -
Java文件IO流和字符编码
注:本文是《大数据量报表技术研究》专著的一部分一、问题的提出wJava有哪些基础的IO流?各有什么特点?w如何读写文本文件?考虑效率和编码问题。w如何读写二进制文件?考虑大文件问题和效率问题。二、问题的研究在Java的API里面,IO流最基础的是InputStream、OutputStream、Reader、Writer,前两种是基于字节(byte)输入输出设计的,后两种是基于字符(char,UCS-2)输入输出设计的。1、编码知识Java...原创 2020-08-29 16:10:33 · 1384 阅读 · 0 评论 -
Java框架(Spring+Mybatis+Druid)多数据源方案
可选方案1.基于Spring的AbstractRoutingDataSource并用AOP动态切换2.基于Mybatis多SqlSession实例分开扫描各自Mapper1、基于Spring的AbstractRoutingDataSource并用AOP动态切换优点:能灵活的控制多数据源,支持读写分离。缺点:1)AOP表达式需要自己配置,切换需要写对应的注解。2)开启事务时,需要注意AOP顺序( 数据库事务的注解 要在 数据源切换的注解 之后)。3)数据源动态切换,会有一.原创 2020-08-25 10:05:05 · 691 阅读 · 0 评论 -
eclipse调试断点报错:Unable to install breakpoint in...
eclipse调试断点时出现:Unable to install breakpoint in...解决方案:1.window-->preference-->java-->installed jres中jre使用jdk中的。2.项目的properties中java build path-->libraries-->jre system library选择alternate jre,选择刚刚设置的jre即可。...原创 2020-08-25 09:25:18 · 857 阅读 · 0 评论 -
eclipse/idea在Main方法执行完之后,JVM不退出
Main方法执行完之后,JVM不退出,解决方案:因为Main方法执行完之后,有线程未关闭,所以JVM肯定不会退出,解决方法1(治本):使用debug方式运行main,看Eclipse的debug界面或者看jstack,找出main方法结束后还在运行的线程,将其stop即可。解决方法2(治标):在main方法的最后,加上一句 System.exit(0);代码,相当于执行完main方法后,强制jvm退出(类似于kill)。解决方法3(治标):将main方法,换成juit的@Test单元测试,单原创 2020-08-25 09:22:11 · 4248 阅读 · 0 评论 -
Spring配置加载ContextLoaderListener和DispatcherServlet的区别和关系
在Spring应用的web.xml里面可以配置ContextLoaderListener和DispatcherServlet: <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:...原创 2019-01-25 18:39:48 · 2928 阅读 · 1 评论 -
Spring ApplicationListener ContextRefreshedEvent 多次执行问题及源码分析
我们可能会使用到如下方法,来在Spring初始化完成后,执行某些程序: @Component public class SpringContextRefreshedListener implements ApplicationListener<ContextRefreshedEvent> { @Ov...原创 2019-02-26 18:04:09 · 6807 阅读 · 4 评论 -
Spring tomcat下html url找不到
为什么有Controller配置的:@RequestMapping("/sys/aaa.html")String hosdsdsdsfdme() { return "sys/main.html";}但是这个地址找不到?http://localhost:8080/renren-security/sys/aaa.html补充现象:只有.html后缀会找不到。换成.pn...原创 2019-01-18 20:34:15 · 907 阅读 · 0 评论 -
Spring ImportBeanDefinitionRegistrar的用法
以org.mybatis.spring.annotation.MapperScan为例,来说明ImportBeanDefinitionRegistrar的用法 这个注解源代码如下: @Target(ElementType.TYPE) @Import(MapperScannerRegistrar.class) public @interface MapperScan...原创 2019-01-25 18:39:41 · 4145 阅读 · 0 评论 -
mybatis最佳实践
原则:1. sql和代码分离,sql易于维护和 检查评审。2. 高度的自动化和封装,减少开发工作量。从原则上讲: 要避免像hibernate那样过度封装,形成很多新的语法(HSQL), 也不能像jdbc那样,SQL和代码混写,不方便检查和审核。 Mybatis的Example用法,其实不过是sql拼接的语法糖,和sql与代码混写没多少区别,故不推荐使用,...原创 2019-01-18 20:33:14 · 2251 阅读 · 4 评论 -
Spring Bean高级配置方法大全
案例一:组合配置(1)枚举类型的属性(2)使用构造函数赋值(3)property结点下面用bean作为value<bean id="jacksonMapper" class="org...Jackson2ObjectMapperFactoryBean"> <property name="objectMapper"> <!-- bean标...原创 2019-01-17 18:21:10 · 540 阅读 · 0 评论 -
Spring的Property配置加载和使用过程及Environment的初始化过程
本文解析Spring源码,回答以下几个问题:1、Spring的Property配置加载和使用过程?2、Spring内置的Environment的初始化和使用过程?3、常见Spring的Property相关类的关系? 对于Spring加载Property配置,有如下几个类:(按层级展示)PropertiesLoaderSupport PropertiesFactoryB...原创 2019-02-26 18:04:27 · 7672 阅读 · 0 评论 -
深入解读JSP的底层解析过程
互联网上,这方面的资料实在太少了,故把自己研究的一些结果公布出来。 首先,问大家几个问题,看大家能不能回答出来,或者在网上能不能找到答案:1、page、include、taglib这三个编译指令,执行的顺序是什么?2、JSP文件中的Java代码、编译指令、动作指令、EL标签、第三方标签、静态文本等,被编译的顺序是什么?3、常用的、与JSP解析/编译相关的类有哪些?换句话说,JS...原创 2019-01-17 18:19:42 · 2379 阅读 · 0 评论 -
精通Log4j配置
本文根据官方文档,及长期的实践经验总结而出。 一、logger、appender、layout Log4j can send your log messages to the console, a text file, an html file, an xml file, and so on. 日志制造者logger: send your message strings...原创 2019-01-17 18:19:25 · 520 阅读 · 0 评论 -
Logback的深度使用经验和最佳实践
首先,日志的记录方案,在另一篇文章中单独说明:http://blog.zollty.com/b/archive/plan-for-java-project-log.html在该文章中,说明了Logback的下面5个功能:1、使用logback的环境变量定义和读取功能;2、在logback启动之前,继承ch.qos.logback.core.status.OnConsoleStatu...原创 2019-01-18 20:34:03 · 2454 阅读 · 0 评论 -
Log4j2配置及与Logback对比
Log4j2 使用和配置一、Maven配置1、与SpringBoot集成 <!--====================logrelated--> <dependency><!--exclude掉spring-boot的默认log配置--> <groupId>org.springf...原创 2019-01-18 20:33:58 · 16117 阅读 · 6 评论 -
Logback最佳实践和使用指导
一、概述 1、采用dev(开发环境)、test(测试环境)、pre release(预发布、准生产环境)、production(生产环境)等不同的日志配置,根据系统变量、环境变量等自动识别。2、特殊的记录,需要大批量写入日志文件,应该采用异步线程写文件。 二、日志输出(Appender)分类 分为5个基础类: FILE_EXCEPTION (异常日志,包括E...原创 2019-01-18 20:33:41 · 2573 阅读 · 0 评论 -
彻底关掉MyEclipse的自动校验,特别是对js文件的校验!!
百度搜出来的一大堆方法都没有用,因为他们都是一样的,让你关掉校验:Window --》Preferences --》MyEclipse --》单击Validation。但是还是没用,自动校验还是会出来,因为有一个选项是:Revalidate project when excluded resource list is modified.,也就是说一旦资源文件列表改变,MyEclipse还是会原创 2012-04-23 22:33:33 · 21208 阅读 · 0 评论 -
Java web应用服务器对比(Tomcat、JBoss、Jetty等)
官方介绍:Apache TomcatApache Tomcat is an open source software implementation of theJavaServlet and JavaServer Pages technologies and developed by the Apache Software Foundation (ASF).JBoss En...原创 2019-01-18 20:36:28 · 4041 阅读 · 0 评论 -
tomcat和tomcat-embed的区别比较
1、tomcat和embedded tomcat都是 Apache Tomcat官方发布的,从官网上看,从Tomcat 7开始, tomcat和embedded tomcat版本是同步发布的。如下所示,7.0.78版本:Core: zip (pgp, md5, sha1) tar.gz (pgp, md5, sha1) 32-bit Windows zip (pgp,...原创 2019-01-25 18:39:28 · 35661 阅读 · 1 评论 -
被was坑惨了,websphere下面报webapp.WebApp logError SRVE0293E: [Servlet Error]-[null]错误。
具体报错信息如下:webapp E com.ibm.ws.webcontainer.webapp.WebApp logError SRVE0293E: [Servlet Error]-[null]: com.ibm.ws.webcontainer.webapp.WebAppErrorReport:at com.ibm.ws.webcontainer.webapp.WebAppDis原创 2013-08-20 09:31:09 · 23890 阅读 · 2 评论 -
Eclipse没有断点 或者取消了断点 但卡在断点上的解决方法
Eclipse没有断点 或者取消了断点 但每次还是卡在这个断点上,原因是,1、没有真正的取消断点,虽然前面那个“点”取消了,但是断点没有取消,这个是Eclipse的一个Bug。可以在Debug界面去查看断点。2、某些断点是在class上的,是Eclipse自动加上的断点,此时,也要去Debug界面才能看到。打开Debug界面,查看Breakpoi原创 2013-05-08 12:22:13 · 4780 阅读 · 1 评论 -
Java网站后端开发笔记
// 导出javadoc//-----------------------------------------------------------------------------打开eclipse,project –> Export –> javadoc 一项一项的选你要输出javadoc的项目,最后一步中VM设置行中加入以下代码:-encoding utf-8 -原创 2013-04-06 03:03:09 · 1786 阅读 · 0 评论 -
Eclipse项目发布到Tomcat下被加载两次
近来发现,Eclipse项目发布到Tomcat下被加载了两次。启动Tomcat时,项目被加载了两次,项目启动了两次。 启动tomcat会两次加载项目 原因是server.xml设置的问题。 解决方案:在右边的工程中,有一个Servers这里有个server.xml文件,打开,观察文件最末尾,删除Context标签。注意不要把也删了。改后,如下所示(即还剩一个原创 2013-03-23 20:05:14 · 10577 阅读 · 3 评论 -
国际化之struts2实现研究
国际化之Struts2实现研究 一、基本原理先不提Struts这一工具,也不用其他现成的工具,如何实现国际化?最基本的实现就是,根据不同的Locale读取不同的文本。例如有两个资源文件:第一个:ApplicationResources_zh_CN.properties第二个:ApplicationResources_en_US.properties当Locale=z原创 2013-03-23 19:46:20 · 7978 阅读 · 1 评论 -
Hibernate 悲观锁(Pessimistic Locking)和乐观锁(Optimistic Locking)
悲观锁(Pessimistic Locking) 悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系转载 2012-09-01 17:41:20 · 1430 阅读 · 0 评论 -
Bad version number in .class file问题
java.lang.UnsupportedClassVersionError: Bad version number in .class file造成这种过错是ni的支撑Tomcat运行的JDK版本与支撑application运行的JDK版本不一致导致的。把它们的JDK版本改成一致步骤如下:1.Window --> Preferences -->Java --> compiler中的com原创 2012-09-27 11:32:14 · 797 阅读 · 0 评论 -
java编译器异常查看的方法
java编译器异常查看的方法: 每次java编译器都报一大堆错,一下子就被吓傻了,不懂怎么看。其实那些错误很多都是无需关注的,你只需要关注错误的根源! 其实很简单,从上往下看,错误的根源在上面,因为下面的错误都是由上面的错误造成的。 要揪出错误的代码行,也要从上往下看,上面的一般是系统类的错误行,顺着它找下来,一直找到最开始出现的那个自己写的类为止,错误的根源就在原创 2012-08-25 11:15:41 · 1803 阅读 · 0 评论 -
createStatement()的用法
一般用法:Statement stmt = conn.createStatement();高级用法:Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);语法格式createStatement(int type,int concurrency)转载 2012-02-24 19:58:19 · 15270 阅读 · 0 评论 -
No suitable driver sqlite tomcat 驱动
tomcat下,找不到 sqlite 的jar包,解决方案如下:找到所用的JDK/jre目录,例如: D:\C\Java\jdk1.6.0_10\jre将 sqlite 驱动包,比如sqlite-jdbc-3.8.7.jar 放入 \lib\ext 目录下面,即D:\C\Java\jdk1.6.0_10\jre\lib\ext目录下面如果还是不行,可以在把驱动包原创 2015-01-28 09:43:52 · 2241 阅读 · 0 评论 -
Maven instal Could not resolve dependencies for project 找不到本地仓库下的jar
我在本地的jar文件,maven instal时找不到。可使jar正确无误。通常情况下,是maven本地仓库的问题。解决方法为:在本地仓库中找到那个jar所在的文件夹,把文件夹删掉,然后重新运行maven指令就可以了。如果还是不行,看看是否为下面这个原因:经过排查,发现是jar的版本问题,我设定的版本是 1.0.1-SNAPSHOT ,这个jar原创 2013-11-04 18:10:07 · 75900 阅读 · 8 评论 -
提交表单乱码问题 action 中文接收的参数乱码
我在一个页面中提交表单数据到一个action中,发现接收到的数据乱码了,现在查明,乱码的问题是由于网页的编码设置问题,如下改成:就好了。但是如果改成GBK后,页面的布局变得一片混乱。对于JSP,charset=UTF-8和charset=GBK,显示的效果有很大差别,各种浏览器之间的差别也很大。所以我建议,在设计HTML的时候,以为标准(或者干脆把HTML写成JSP以供调试原创 2012-05-18 17:12:51 · 4620 阅读 · 1 评论 -
Maven问题记录
Maven问题解决记录: 1、远程仓库中有jar,但是编译时找不到。 问题描述:Failed to execute goal on project amps-dcm: Could not resolve dependencies for project com.zollty.pss:amps-dcm:war:0.0.1-SNAPSHOT: The following artif...原创 2019-01-17 18:26:15 · 1349 阅读 · 0 评论 -
Maven Archetype使用说明
1、使用Archetype生成工程代码 主要命令:mvn archetype:generate 示例:mvn archetype:generate -DarchetypeCatalog=local archetypeCatalog参数,用来指定maven-archetype-plugin读取archetype-catalog.xml文件的位置,位置有以下几种类型:i...原创 2019-01-25 18:39:08 · 2102 阅读 · 0 评论 -
properties文件改变不生效的问题
问题描述: 我原本是用的如下方式:(也是最常见的方式)InputStream is = PropertyFileUtil.class.getClassLoader() .getResourceAsStream("Config.properties");如果我改动了Config.properties文件,重新调用上面的代码去获取...原创 2018-11-21 17:34:33 · 14598 阅读 · 0 评论