摘要:1,现象与问题 /** * 由于Hibernate存在延迟加载问题,当Dao事务提交之后,session就关闭; * 此时如果到显示层就没有办法获取对象,使用openSessionInViewer是解决延迟加载的方案 * * 解决思路: * 1,在表示层开启session * 需要在表示层获取Spring工厂,以此获取Hibernate的SessionFactory * 2,在dao层获取表示层的session * 如果希望在Dao层获取表示层的数据,应该将要获取的数据存储到ThreadLocal中 * ...
阅读全文
摘要:步骤: 1,导入struts2的相关jar包(检查是否有冲突的包,即同一个包有不同的几个版本存在) 2,导入struts2和spring的整合包 struts2-spring-plugin-2.3.4.jar 3,配置struts.xml文件(打开struts2的用户向导帮助可以找到如何集成spring) 4, 创建Action/** * 此时等于用Spring创建了userAction对象,在struts.xml配置文件中写action的class的时候 * 就不能写类,而应该写userAction这个对象 */@Controller("userAction")5,重新配
阅读全文
摘要:--> product.hbm.xml --> --> hibernate.dialect=org.hibernate.dialect.MySQLDialect hibernate.show_sql=true hibernate.hbm2ddl.auto...
阅读全文
摘要:1, 集成Hibernate3与Hibernate4有一定的区别,这里介绍Hibernate3的集成这里的使用的是 :hibernate-distribution-3.6.7.Final 1)导入hibernate包和Spring包 hibernate3.jar \lib\jpahibernate-jpa-2.0-api-1.0.1.Final.jar(支持annotation时需要) \lib\required下所有包 log4j的包 (1.2.17) hibernate的log4j.properties文件 2)beans.xml 创建dataSource(与集成jdbc一模一样); 创建
阅读全文
摘要:1,模板设计模式指的是将相应的模板方法提取出来在专门的位置定义,然后把相同调用过程操作,通过模板来实现对于模板设计模式而言,一般有两种实现方式1)基于继承的实现2)基于组合的实现Spring的JdbcTemplate就是通过基于组合实现的模板设计模式实现的2,基于继承的实现package com.yangw.spring.template;/** * 基于继承实现模板设计模式 * @author Administrator */public abstract class MyJdbcTemplate1 { private void beginConnection(){ Sy...
阅读全文
摘要:1,Spring集成Jdbc,需要导入spring包和数据库驱动包,这里我们使用的是mysql驱动包2,选择一个数据源(DBCP,C3P0),这里我们使用DBCP,需要导入DBCP驱动包3,创建jdbc.properties文件,设置数据库的连接信息3,在beans.xml中导入相应的properties文件4,写相应的dao,并且为这个dao创建jdbcTemplate对象,它需要DataSource构造 --实体类:package com.yangw.spring.model;public class User { private int id; private String ...
阅读全文
摘要:1,动态代理,指的是通过一个代理对象创建需要的业务对象,然后在这个代理对象中统一进行各种操作。步骤: 1)写一个类实现InvocationHandler接口; 2)创建要代理的对象2,创建一个简单的打印日志的类Loggerpackage com.yangw.spring.proxy;import java.util.Date;public class Logger { public static void info(String msg){ System.out.println(new Date()+"----"+msg); }}3,自定义注解类package com...
阅读全文
摘要:1,新建一个Java Project 导入如下jar包和apache-commons-logging包2, 在src目录下创建一个beans.xml的配置文件,先加入schemaspring-beans-3.2.4.RELEASE.jar/org.springframework.beans.factory.xml/spring-beans-version.xsd文件,可以放到本地的dtd目录中,然后引入.3,创建一个对象HelloWorldpackage com.yangw.spring.model;public class HelloWorld { public String hell...
阅读全文
摘要:ProcessEngineFactoryBean ... Transactions ... ... 第一步: 构造Spring ContextClassPathXmlApplicationContext applicationContext = new ClassPathXmlApplicationContext("org/activiti/examples/spring/SpringTransactionIntegrationTest-context.xml");或者@ContextConfigurat...
阅读全文
摘要:Query API有两种方式从引擎中查询数据,查询 API 和本地查询。API方式: List tasks = taskService.createTaskQuery() .taskAssignee("kermit") .processVariableValueEquals("orderId","0815") .orderByDueDate().asc() .list();本地查询方式(写sql):List tasks = taskService.createNativeTaskQuery() .sql("SELECT co
阅读全文
摘要:流程引擎API和服务通过ProcessEngine你可以获取各种服务,它和所有的服务对象都是线程安全的,因此整个整个应用中可以只有一份。ProcessEngine processEngine =ProcessEngines.getDefaultProcessEngine();RuntimeService runtimeService = processEngine.getRuntimeService();RepositoryService repositoryService = processEngine.getRepositoryService();TaskService taskServi
阅读全文
摘要:1, Activiti官网:http://www.activiti.org/ 主页可以看到jar包的下载.2, 进入http://www.activiti.org/userguide/index.html用户指导页进行学习研究.3, 在maven中引入activiti jar 文件的To include the activiti engine in your project, add following dependency (note that you need to change the version to the latest release): org.activiti acti..
阅读全文
摘要:Memcached是高性能的分布式内存缓存服务器,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等, 由国外社区网站 LiveJournal 的开发团队开发。一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 LiveJournal 团队开发了包括 Memcached、MogileFS、Perlbal 等不错的开源项目。• 官方网站:http://www.danga.com/memcached/Memcached的主要特点•基于C/S架构,协议简单•基于libevent的.
阅读全文
摘要:JUDE社区版(不考虑破-解)。现在Jude改名为Astah了。JUDE已停止发展,Astah是它的替代品。Jude有3个版: Professional版, Community版(免费),Share版。Astah也有以上的3个版本。Jude改名为Astah后很多功能被限制使用,如Astah-Community版的java代码导入导出功能被拿到了Astah收费的专业版中。所以还是使用JUDE吧。JUDE-Community 5.5.2版本是最后的免费版本。在所有免费版本中功能最强大。强大到完全够用。JUDE是java开发的,可运行在多个操作系统上,可以JAVA导成UML, UML导成JAVA,.
阅读全文
摘要:1, "中国"两个字的ASCII码是多少? char c1='中'; System.out.println(c1+1-1); //方式1 System.out.println((int)c1); //方式2
阅读全文
摘要:1 OSGi开发环境的建立1.1 Equinox是什么从代码角度来看,Equinox其实就是OSGi核心标准的完整实现,并且还在这个基础上增加了一些额外的功能(比如为框架增加了命令行和程序执行的入口)。我们在之前入门篇讲解的都东西其实都是OSGi核心标准的一小部分。其实它的核心就是一个jar包,这个jar包既能执行(作为标准Java包的特性),也是一个bundle(Manifest里面含有OSGi bundle特有的元数据)。我们能够利用Equinox项目的代码来运行一个实实在在的OSGi框架,框架启动后,你就可以将你开发好bundle放到里面运行。1.2 下载EquinoxEquinox在h
阅读全文
摘要:前言作为OSGi框架中最上面的一层,服务层带给了我们更多的动态性,并且使用了大家或多或少都曾了解过的面向服务编程模型,其好处是显而易见的。1 什么是服务简单的说,服务就是“为别人所做的工作”,比如两个对象互相调用方法,那么被调用者就是在为调用者做工作。那么如何将服务和一次普通的方法调用区别开来呢?其实一个服务可以看作是在服务的提供者和使用者之间的一个契约。使用者一般不关心其实现的细节,甚至连谁提供的都不想知道,只要满足这个契约(服务应该提供什么功能,满足什么格式)就好了。使用服务的过程也包含了发现服务和达成协议的形式,也就是说我们需要通过服务的标志性特征来找到对应的服务。其实,Java的接口可
阅读全文
摘要:前言生命周期层在OSGi框架中属于模块层上面的一层,它的运作是建立在模块层的功能之上的。生命周期层一个主要的功能就是让你能够从外部管理应用或者建立能够自我管理的应用(或者两者的结合),并且给了应用本身很大的动态性。1 什么是生命周期管理一般来说,程序(或者程序的一部分)都一定服从某种生命周期。软件的生命周期有4个典型的阶段,如下图:如果你正在创建一个应用,首先你得安装(install)它;然后当这个应用的所有依赖都满足了,我们就可以执行(execute)这个应用;如果这个应用不需要了,我们可以停止(stop)它;过了一段时间,我们可能需要更新(update)这个应用的版本;最后,我们可能会移除
阅读全文
摘要:1 什么是模块化模块层是OSGi框架中最基础的一部分,其中Java的模块化特性在这一层得到了很好的实现。但是这种实现与Java本身现有的一些模块化特性又有明显的不同。在OSGi中模块的定义可以参考下图:也就是说一个模块(module)定义了一个逻辑边界,这种模块本身精确的控制了哪些类是完全被封装起来的,而哪些类需要暴露出来作为外部使用。这样我们就可以轻松的将实现屏蔽在模块的内部,而将公共API暴露在外部。2 为什么需要模块化2.1 OSGi中模块化与面向对象的联系与区别在用Java编写面向对象程序的时候,一个了解面向对象概念的人是不会把所有功能都塞到同一个类里面去的,面向对象让你从问题域中发现
阅读全文
摘要:OSGi是什么?OSGi联盟现在将OSGi定义为一种技术:OSGi技术是指一系列用于定义Java动态化组件系统的标准。这些标准通过为大型分布式系统以及嵌入式系统提供一种模块化架构减少了软件的复杂度。这一系列的标准由OSGi联盟维护,标准的实现通常则称为OSGi容器或者OSGi服务平台。OSGi标准到现在为止应用最广泛的当属是2005年发布的R4。2003年Eclipse开始基于OSGi对Eclipse进行了重构,IBM的加入也影响了R4的制定,作为Eclipse内核的Equinox也成为OSGi标准的参考实现。OSGi各个版本的标准可以从osgi.org中下载。最新标准分为两个部分,OSGi
阅读全文