摘要: 心跳包之所以叫心跳包是因为:它像心跳一样每隔固定时间发一次,以此来告诉服务器,这个客户端还活着。事实上这是为了保持长连接,至于这个包的内容,是没有什么特别规定的,不过一般都是很小的包,或者只包含包头的一个空包。 在TCP的机制里面,本身是存在有心跳包的机制的,也就是TCP的选项:SO_KEEPALIVE。系统默认是设置的2小时的心跳频率。但是它检查不到机器断电、网线拔出、防火墙这些断线。而且逻辑层处理断线可能也不是那么好处理。一般,如果只是用于保活还是可以的。 心跳包一般来说都是在逻辑层发送空的echo包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同... 阅读全文
posted @ 2011-11-10 16:54 暖日 阅读(2857) 评论(0) 推荐(1) 编辑
摘要: synchronized作用: Synchronized关键字的作用一个词概括就是:线程同步。它可以用来修改对象中的方法,将对象加锁。相当于不管哪一个线程A每次运行到这个方法时,都要检查有没有其它正在用这个方法的线程B(或者C D等),有的话要等正在使用这个方法的线程B(或者C D)运行完这个方法后再运行此线程A,没有的话,直接运行。synchronized语法: 1.synchronized方法 如:public synchronized void accessVal(int newVal); synchronized方法控制对类成员变量的访问:每个类实例对应一把锁,每个synchr... 阅读全文
posted @ 2011-11-10 15:02 暖日 阅读(1031) 评论(0) 推荐(0) 编辑
摘要: 请看MyService.java中片段代码(由wsimport工具自动生成,请参看我的上一篇博文:使用命令wsimport构建WebService客户端):View Code 1 static { 2 URL url = null; 3 WebServiceException e = null; 4 try { 5 url = new URL("http://localhost:8080/Demo/services/MyService?wsdl"); //硬编码 6 } catch (Malformed... 阅读全文
posted @ 2011-11-04 14:03 暖日 阅读(4339) 评论(0) 推荐(0) 编辑
摘要: 服务端:请看我的上一篇博文(Java使用XFire调用WebService接口)客户端:在JDK的bin文件夹中,有一个wsimport.exe,这个工具依据wsdl文件生成相应的类文件,然后用这些类文件,就可以像调用本地的类一样调用WebService提供的方。该工具可以用于非Java的服务器,如:用C#编写的WebService,通过wsimport则生成Java的客户端实现。 在命令提示符中使用如下命令:wsimport -keep -p com.demo.client http://localhost:8080/Demo/services/MyService?wsdl 命令参数说明.. 阅读全文
posted @ 2011-11-03 10:33 暖日 阅读(48645) 评论(3) 推荐(2) 编辑
摘要: 看了一些Java调用WebService接口的例子,很多都是Ctrl+C,Ctrl+V的,其中有很多拿来使用后发现有错误,令人郁闷,特此写了一篇经过测试的,只是一个小例子。服务端(为客户端提供Webservice接口): 使用工具:myeclipse-8.6.1-win32,apache-tomcat-7.0.11 开发步骤:1.创建工程 File->New->Web Service Project,弹出Web Service Project窗口,需要填写Project Name(例子是Demo),选择XFire,然后一路next,直到完成。 创建完成后,打开生... 阅读全文
posted @ 2011-10-31 15:01 暖日 阅读(69978) 评论(5) 推荐(8) 编辑
摘要: JDBC连接数据库代码和步骤:加载JDBC驱动程序: 在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM,这通过java.lang.Class类的静态方法forName(String className)实现。View Code 1 try {2 Class.forName(“com.microsoft.sqlserver.jdbc.SQLServerDriver”);3 } catch (Exception e) {4 e.printStackTrace();5 } 完成加载后,会将Driver类的实例注册到DriverManager类中。创建数据库的连接 要连接数据库,需要向... 阅读全文
posted @ 2011-10-20 11:32 暖日 阅读(539) 评论(0) 推荐(0) 编辑
摘要: 属性配置文件的使用:假设有一个连接数据库的属性配置文件jdbc.properties,文件内容如下: jdbc.driverClass=com.microsoft.sqlserver.jdbc.SQLServerDriver jdbc.jdbcUrl=jdbc:sqlserver://localhost:1433; DatabaseName=info jdbc.username=sa jdbc.password=123那么如何使用配置文件呢?其实很简单 我们创建如下类:View Code 1 package com.server.db; 2 3 import java.util.... 阅读全文
posted @ 2011-10-17 16:03 暖日 阅读(3788) 评论(0) 推荐(0) 编辑
摘要: 本文主要解释log4j的配置文件各个配置项的含义,内容是从网上转载的1.Log4j的优点 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。 log4j的好处在于: (1) 通过修改配置文件,就可以决定log信息的目的地——控制台、文件、GUI组件、甚至是套接口服务器、NT的事件记录器、UNIXSyslog守护进程等。 (2) 通过修改配置文件,可以定义每... 阅读全文
posted @ 2011-09-29 13:44 暖日 阅读(17687) 评论(0) 推荐(0) 编辑
摘要: 对于开发和调试以及上线运营,日志必不可少,常用日志工具有:Log4j、commons-logging、甚至System.out。这里用Log4j为例,说说如何将日志输出和业务代码做到最大分离。Log4j 一般使用方法: 1.定义配置文件:log4j.properties 2.在需要输出日志的类里获取Logger实例:static Logger logger = Logger.getLogger(AAA.class); 3.输出日志:logger.debug("xxx");大家这么做都已经轻车熟路了,但是这样做有两个问题: 1.每个需要输出日志信息的类里,都要引入log4j的 阅读全文
posted @ 2011-09-28 15:23 暖日 阅读(815) 评论(1) 推荐(0) 编辑
摘要: String类 1、String对象的初始化由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = "abc"; s = "Java语言"; 其实按照面向对象的标准语法,其格式应该为: String s = new String("abc"); s = new String("Java语言");只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如String s = new String("abc");实际 阅读全文
posted @ 2011-09-26 17:10 暖日 阅读(3775) 评论(0) 推荐(0) 编辑