![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
kyfxbl
这个作者很懒,什么都没留下…
展开
-
tomcat配置https
java平台的keystore是对https证书的一种包装,配置方式和http服务器的证书配置略有不同 最近和一个第三方系统对接,需要安全认证。安全认证有2种方式,一种是在应用层实现,比如通过ws-security或者在报文头增加一些字段等;另外一种是借助https,对应用层透明。本次对接采用的是https的方案根据部署方式的不同,具体的实现也有区别。一般在tomcat前面会有一个http服务器如原创 2016-02-06 22:43:57 · 1298 阅读 · 1 评论 -
查看java进程的PID
有3种方法都可以:1、用WINDOWS的任务管理器,打开pid列,就能看到2、用jps命令3、用jconsole或者jvisualvm等可视化工具原创 2013-09-24 10:58:15 · 2366 阅读 · 0 评论 -
远程调试
远程debug首先需要在容器里开启配置在${JBOSS_HOME}/bin/standalone.conf中找到# Sample JPDA settings for remote socket debugging#JAVA_OPTS="$JAVA_OPTS -Xrunjdwp:transport=dt_socket,address=8787,server=y,suspend=n"将注原创 2013-09-24 11:01:20 · 748 阅读 · 0 评论 -
java动态代理
常见的动态代理有2种:第一种情况,目标类本身实现了某个接口,那么这时会用jdk来生成代理类,原理不太清楚,貌似是反射第二种情况,目标类本身没有实现任何接口,这个时候jdk的原生代理机制就不好使了,一般会用CGLIB的字节码生成技术来产生代理类原创 2013-09-24 11:07:12 · 625 阅读 · 0 评论 -
JAVA平台几个主要的开源组织
apache基金会,这个最有名,应该谁都知道了eclipse基金会,貌似是IBM赞助的,也比较有名,OSGi的标准好像就是这个组织弄的,不知道有没有记错jboss inc,做了jboss、hibernate等opensymphony,不是那么大,不过它的几个开源项目以前还是很常用的,webwork、quartz、sitemesh等,不知道现在还有没有更新codehaus,今年开始用原创 2013-09-24 11:15:23 · 1708 阅读 · 0 评论 -
linux下加载文件资源好纠结呀
为了给自己添堵,我把一台笔记本的开发环境装成linux了,希望督促自己熟悉linux可是我刚才发现在linux下,用java加载资源文件和在windows下还不一样,比在windows下面麻烦好多,烦死我了比如在windows下面,假设在eclipse里建一个工程helloworld,目录结构是helloworld--- src--- bin我一般会把配置文件,比如sprin原创 2013-09-24 11:15:34 · 1207 阅读 · 0 评论 -
转,一个关于JNDI的好帖子
http://www.javaworld.com/javaworld/jw-04-2002/jw-0419-jndi.html原创 2013-09-24 11:23:21 · 735 阅读 · 0 评论 -
JNDI笔记
JNDI服务是WEB容器提供的服务。WEB应用可以通过JNDI服务从容器中得到各种组件(包括但不限于数据源),实现各组件的解耦。以下举一个例子。在tomcat的conf/server.xml中配置: <Resource name="bean/MyBeanFactory" auth="Container" type="com.huawei.j原创 2013-09-24 10:31:22 · 927 阅读 · 0 评论 -
解决all threads are currently busy
这2天系统宕机了5次,查看后台日志发现tomcat报all threads are currently busy。把tomcat的最大线程调到500,依然没解决问题。于是用jconsole连接上服务器,发现所有的空闲线程都被以下代码占用:ExtAlarmMonitorAction.loadAlarmData()查看该方法,发现如下代码: while(null==cb){原创 2013-09-24 10:31:32 · 1755 阅读 · 0 评论 -
动态创建多个连接池
系统场景:系统依赖多个数据库。其中一台数据库服务器运行ORACLE,同时还有数台机器上跑着ObjectServer内存数据库。由于到部署时才能确定从机的数量,因此需要动态创建连接池方案:Oracle数据库用c3p0来管理连接池。另外写一个连接管理器来动态创建内存数据库连接池代码:经过简化,只贴出关键代码,去掉日志、异常处理、null检查等// ObejctServer连接池,系统中域原创 2013-09-24 10:32:24 · 2140 阅读 · 0 评论 -
linux下用jmap命令进行堆栈转储
在linux下,命令和windows下一样,用root用户输入以下命令:jmap -dump:format=b,file=/filepath/heap.bin pid结果报错:Unable to open socket file: target process not responding or HotSpot VM not loadedThe -F option can be us原创 2013-09-24 11:07:27 · 4452 阅读 · 0 评论 -
关于JNDI
刚才跟“今年是龙年”讨论之后,对JNDI的有关概念清楚了一些,整理总结如下1、JNDI规范的归属JNDI本身是java se最早的一批规范,但是似乎不像JDBC等,有专门的JSR编号,在jsr.org上,找不到专门描述JNDI的规范http://jcp.org/en/jsr/all另外在JAVA EE规范中第5章,也专门提到了JNDIhttp://java.chinaitlab.c原创 2013-09-24 11:23:16 · 1143 阅读 · 0 评论 -
调试MOST SSO中遇到的问题的解决过程
今天把most-sso-client集成进开发框架,遇到了一些问题,把解决的过程记录一下most-sso-client是基于CAS Client的二次封装(是另外一个项目组做的,不知道是出于什么目的进行再次封装)1、jar包冲突首先把most-sso-client引入开发框架以后,跑起来报ClassNotFoundException。看到是报StringUtils没找到,检查工程路径里原创 2013-09-24 11:11:33 · 771 阅读 · 0 评论 -
在windows平台,用jmap命令得到转储文件
jmap命令在windows平台和linux平台下用法不一样,本文说的是windows下的操作先用jps找到目标进程的pid,比如是1345然后用以下命令:jmap -dump:format=b,file=heap.bin 1345那么就会得到一个heap.bin的转储文件,接下来就可以用MAT等工具对该转储文件进行分析原创 2013-09-24 11:05:55 · 3883 阅读 · 0 评论 -
组合和聚合的区别
1、组合和聚合的区别组合,叫compose。在代码层面上用内部类实现,如果A类由B类组合而成,则A和B有共同的生命周期。打比方的话就是人和大脑的关系,人由大脑组合而成,如果人死了,大脑也活不成。用UML表示,是一个实心的框框。聚合,叫aggregate。在代码层面上用字段实现,如果A类包含B类型的字段,则A和B有各自的生命周期。打比方的话就是人和公司的关系,公司由人聚合而成。用UML表示,原创 2013-09-24 10:56:47 · 827 阅读 · 0 评论 -
JVM学习笔记(一)——JAVA内存区域
最近开始学习JVM,在此把学习中的体会记录下来。资料主要来源是《深入理解JAVA虚拟机》这本书,以及一些网上找的其他资料。目标JVM是HotSpot1、JAVA运行时数据区包括程序计数器、堆、虚拟机栈、本地方法栈、方法区2、内存区域可以分为“线程私有”和“线程共享”2种。比如程序计数器是属于线程私有的,为了在线程切换之后能恢复到正确的执行位置,每条线程都需要有一个独立的程序计数器;而堆是线原创 2013-09-24 10:56:53 · 762 阅读 · 0 评论 -
jar包冲突啦
最近遇到jar包冲突了,很郁闷。jar包冲突一般是这么发生的:假设有一个开源组件库,everyone_depends_me.jar,因为很好用,所以大家都用它。第三方组件A和B都用到它了组件A用到了everyone_depends_me-1.1.jar里面的methodA()方法,并将自己也以jar包方式发布,叫component_a.jar组件B用到了everyone_depends原创 2013-09-24 11:01:10 · 664 阅读 · 0 评论 -
对JAVAEE、规范的一点理解
有几个问题,一直没搞清楚,今天问了很多人,懂了一点点,在这里总结一下问题是:什么是JAVA EE,各种规范的接口的jar包(及源码)怎么获取,各种规范的实现的jar包(及源码)怎么获取1、什么是JAVA EEJAVA EE是由一系列规范组成的,规范是由JCP制定的,并且提供了参考实现。规范(Specification)是一系列接口,不包含具体实现有以下常见的JAVA EE实现,包括原创 2013-09-24 11:06:56 · 799 阅读 · 0 评论 -
classloader简介
一、基本classloader体系默认有3个classloader,分别是bootstrap、extension、app(system)bootstrap是在JVM启动时加载的,会读取$JAVA_HOME/lib下的classextension会读取$JAVA_HOME/lib/ext下的classapp,也称为system,加载应用程序所需的class,是由classpath变量原创 2013-09-24 11:14:12 · 868 阅读 · 0 评论 -
关于JCP
今天上JCP去下载jdbc的规范,看到有2个链接:记得以前下servlet规范时候也看到了,貌似JSR都有这2个,就google了一下,在stack overflow上看到一个完整的解答了:The difference is in the license that you accept before downloading the specification. I'm surprise原创 2013-09-24 10:52:32 · 1007 阅读 · 0 评论 -
JAVA类的初始化过程
1、java类中的字段,第一步是自动初始化,比如定义了private int i;由于没有给其赋值,i会被自动赋值为0。这个步骤是仅限于类中的字段的,如果方法中的临时变量,不会有这个动作。而且如果在方法中使用未经赋值的变量,编译会不通过2、第二步是指定初始化private int i = 3;如果有了显式的赋初值,那么第一步的自动初始化就不会发生了。但是该步骤和自动初始原创 2013-09-24 10:58:20 · 694 阅读 · 0 评论 -
java集合
1、集合是一种数据结构,虽然种类不少,但是本质上就是2种,一种是Collection,一种是Map。Collection包括List Array Set等,Map包括Map和Object。这2种集合基本类型在JSON中也分别有对应。Collection对应的是[],中间用,分隔。而Map对应的是{},键和值之间用:分隔,不同的字段之间也是用,分隔。这2种数据结构可以互相嵌套2、ArrayL原创 2013-09-24 10:58:42 · 610 阅读 · 0 评论 -
(新手)java多线程基础知识——调度与同步
以前写过一篇关于多线程的总结:http://kyfxbl.iteye.com/blog/1370377很久没用到,忘记了。最近又遇到了一些多线程的问题,重新查了些资料,再提炼一下。本文不涉及java.util.concurrent包里的API,后面再专门介绍1、线程的状态线程的运行状态主要有runnable、running、waiting、timed_waiting、blocked等原创 2013-09-24 11:22:30 · 828 阅读 · 0 评论 -
java的方法调用,参数是按值传递还是按引用传递
各种语言都涉及到方法调用,一个基本的问题就是:参数是怎么传递的通常认为有2种方式:按值传递,按引用传递按值传递指的是,方法内部对参数的赋值,在方法外部对参数无影响;按引用传递则相反。比如public static void main(String[] args) { int i = 2; changeNumber(i); System.out.print原创 2013-09-24 11:22:51 · 1278 阅读 · 0 评论 -
类初始化顺序,及获取资源
最近在读tomcat的源码,涉及到各种类继承体系的初始化,还有资源加载这些都是JAVA语言里最基础的东西,但是做应用开发的时候,往往很少涉及到。也是最近看源码,才感觉有些模糊,在这里总结一下一、类继承体系的初始化子类Son继承父类Parent,当实例化一个Son类的对象时,整个初始化顺序是这样的:1、父类的所有静态初始化,包括静态字段,和static块,按照代码书写顺序执行2、原创 2013-09-24 11:22:56 · 748 阅读 · 0 评论 -
instance、Class、Object
一、实例和类所有实例都有所属的类;所有类都是Class类的实例比如public static void main(String[] args) { String s = "abc"; System.out.println(s.getClass()); System.out.println(s.getClass().getClass()); }输出是原创 2013-09-24 11:23:01 · 1034 阅读 · 0 评论 -
system properties和environment properties
原来我一直都混淆了system properties和environment properties。今天终于搞清楚了,记录一下一、system properties这里的system指的不是OS,而是JVM systemsystem properties通过System.getProperty(key);来获取而设置的方法主要有3种:第一种是JVM内置的,包括jav原创 2013-09-24 11:23:11 · 2603 阅读 · 0 评论 -
(新手)JMX
最近在读tomcat源码,稍微看了下jmx我感觉JMX也是有点像C/S的模型,应用相当于JMX Server,注册了一系列的MBean;然后由专门的JMX客户端,对这些MBean进行管理所有JAVA应用,都有一些默认的MBean,这是由JVM注册的,比如ClassLoadingMXBean、MemoryMXBean等;然后tomcat、jboss这样的servlet容器,也会注册一些MBe原创 2013-09-24 11:23:26 · 789 阅读 · 0 评论 -
关于filter
struts2的实现核心是filter,本文简要描述filter相关的一些问题一般应用中如果用到了struts2,则会配置一系列action,不会配置和,但是struts2依然会匹配到正确的Action奥秘在于struts2用一个filter过滤了所有匹配的请求(一般是*.action)在这个filter中,struts2根据请求的URL,截取出actionName,在自己的配置文件中原创 2013-09-24 11:24:17 · 831 阅读 · 0 评论 -
classloader举个例子
今天下午被一个同事问起,什么情况下需要用到ContextClassLoader另一篇博客http://kyfxbl.iteye.com/blog/1900855已经介绍过了,这里就再举个更简单的例子一个很常见的例子,是在JNDI里的。JNDI的入口类在rt.jar里,是由bootstrap classloader加载的;而JNDI的SPI实现类,则是由各厂商提供的,一般在classpath原创 2013-09-24 11:26:40 · 861 阅读 · 0 评论 -
java io基础知识
一、char[]、String、byte[]转换首先需要清楚JAVA中这3种类型的区别byte是字节,byte[]是字节数组,是字符在计算机中的实际存储。字节如何转换成字符,要看用什么编码。如果用UTF-8编码的话,一个字节是不能转成一个中文字符的char是字符,char[]是字符数组,其实也就是字符串。String本质上就是char[]。char[]和String之间的转换,不需要指原创 2013-09-24 11:15:03 · 799 阅读 · 0 评论 -
System.getProperty()
最近看tomcat源码,里面有好多System.getProperty()的调用。关于这个方法,以前都没注意过,今天学习了一下在jdk源码里的注释就说得很清楚了,但我不知道过期没过期,发现jdk里很多注释和代码都不匹配,有的代码更新了,注释还是旧的网上也有一些汇总,我数了一下,和jdk里的注释是一致的。可读性更好,我就贴出来了java.versionjava版本java.vendorj原创 2013-09-24 11:14:07 · 804 阅读 · 0 评论 -
JSR315笔记
最近在看servlet3.0的规范,记录一些比较重要的1、servlet必须是单实例的,以多线程的方式响应并发的HTTP请求。所以并不存在所谓的“每个Servlet实例”的说法,除非是使用已经弃用的SingleThreadModel2、servlet的生命周期,要经过加载--实例化--初始化的过程,其中最重要的是init()方法3、规范中定义的初始化参数(parameter)有2种,一原创 2013-09-24 10:59:33 · 998 阅读 · 0 评论 -
java多线程小结,及解决应用挂死的问题
这两天为了定位JBOSS老是挂死的问题,学习了一下JAVA多线程方面的知识,在此总结一下1、在Java程序中,JVM负责线程的调度。线程调度是指按照特定的机制为多个线程分配CPU的使用权。调度的模式有两种:分时调度和抢占式调度。分时调度是所有线程轮流获得CPU使用权,并平均分配每个线程占用CPU的时间;抢占式调度是根据线程的优先级别来获取CPU的使用权。JVM的线程调度模式采用了抢占式模式。原创 2013-09-24 10:59:48 · 1215 阅读 · 0 评论 -
classpath
classpath也是文件系统中的路径,作用是告诉类加载器要到哪个路径去找所需要的类比如说有这么一个类Main,运行的时候用java Main那是找不到的,因为java命令不知道上哪里去找这么一个类,这时候就需要指定classpath才可以(如果在环境变量里配置了classpath变量那么可以省掉这一步,不过这个就涉及到classpath默认位置的问题,这里不讨论)再比如说常用的tomca原创 2013-09-24 11:01:05 · 550 阅读 · 0 评论 -
HttpClient的超时,以及jdk的调试
最近开发一个东西,需要用到HttpClient。这个库目前最新的版本是httpcomponents-client-4.2.1,是基于httpcomponents-core-4.2.1的,该库在版本升级过程中,发生过比较大的变动。之前这个库叫做HttpClient,现在统称为HttpComponents,拆分成了client和core,应该是重新写过我遇到的问题,是不知道怎么配置超时时间,因为A原创 2013-09-24 11:06:30 · 1125 阅读 · 0 评论 -
学习jms(一)——基本实例
Java Message Service是java ee的规范之一,可以用来发送异步消息,在某些场景下,可以作为不同系统,或者不同模块之间的集成方式。可以类比为通过数据库来集成的方式,模块A完成逻辑以后,往数据库插入一条记录,模块B定时轮询数据库,如果查到相应的记录,就进行处理。jms集成实际上思路是差不多的,只是功能更强,并且提供了标准的API支持,而且也可以避免反复轮询数据库或者读取文件的原创 2013-09-24 11:07:01 · 631 阅读 · 0 评论 -
(新手帖)Action、jsp、js的关系
4年前第一次用struts2的时候,有一个疑问,为什么在js里无法直接取到Action里的值,而在jsp里可以现在基本知道拉,总结一下:Action是在服务端(servlet容器里)执行的,执行之后生成jsp,并写入响应返回给客户端(一般是浏览器)通常情况下,Action和jsp可以视为一个整体,Action是jsp的前置,jsp可以从ValueStack里取到Action中定义的字段原创 2013-09-24 11:08:28 · 1937 阅读 · 0 评论 -
JPDA简单总结
我们平时经常使用的debug功能,其实背后大有文章。本文只是一点总结,要深入了解的话,可以看看这个系列的文章:http://www.ibm.com/developerworks/cn/views/java/libraryview.jsp?search_by=%E6%B7%B1%E5%85%A5+Java+%E8%B0%83%E8%AF%95%E4%BD%93%E7%B3%BB一、java平台调原创 2013-09-24 11:13:31 · 1496 阅读 · 0 评论 -
java annotation简介
开发中自定义annotation的场景不太多,但是很多框架的源码里都用到了自定义annotation,不了解的话就看不懂了,所以也简单地学习一下试了一下,比较简单,以下通过一个例子来说明首先是annotation本身的定义@Target(ElementType.METHOD)@Retention(RetentionPolicy.RUNTIME)@Documentedpub原创 2013-09-24 11:13:46 · 798 阅读 · 0 评论