当前位置: 首页 > news >正文

wordpress企业网站教程网站增长期怎么做

wordpress企业网站教程,网站增长期怎么做,wordpress主题 破解主题,成都设计网站建设JCR模块 Spring Modules的一部分#xff0c;JCR模块的主要目标是#xff1a;以一种类似Spring主分发包中ORM包的方式#xff0c;简化使用JSR-170 API进行开发。特点如下#xff1a; JcrTemplate#xff0c;允许执行JcrCallback和异常处理#xff08;将需检查的JCR异常转换… JCR模块 Spring Modules的一部分JCR模块的主要目标是以一种类似Spring主分发包中ORM包的方式简化使用JSR-170 API进行开发。特点如下 JcrTemplate允许执行JcrCallback和异常处理将需检查的JCR异常转换成不需检查的Spring DAO异常。这个模板实现了来自JCRSession的绝大部分方法可以简单地作为替换物使用。此外该模板知道线程绑定的会话这个会话可以跨几个方法使用这在使用事务型仓库时非常有用。 RepositoryFactoryBean它配置、启动和停止仓库实例。因为JSR-170并没有说明仓库配置的标准方式需要注意实现在这个方面的不同。这个支持包含预定义的用于Jackrabbit和Jeceira的FactoryBean以及一个可以很容易支持其它仓库的抽象基类。 SessionFactory用来统一RepositoryCredentials和Workspace接口允许自动注册监听器和自定义名字空间。Spring声明性事务为那些实现了可选事务特性的仓库提供了支持。 OpenSessionInView拦截器和过滤器允许每个线程跨不同组件使用同一会话。与JcrTemplate一起检索、关闭和管理JCR会话的工作已经外部化对于调用者完全透明。本文将使用参考实现Jackrabbit由于JCR模块使用的是javax.jcr接口因此改变实现根本就是一个配置的问题。让我们一步一步地来看看在Jackrabbit之上如何使用Java内容仓库以及如何让Spring模块来帮助完成这一工作。 配置仓库和SessionFactory bean idrepository classorg.springmodules.jcr.jackrabbit.RepositoryFactoryBean !-- normal factory beans params -- property nameconfiguration valueclasspath:jackrabbit-repo.xml/ property namehomeDir ref./tmp/repo/ /bean JCR支持提供RepositoryFactoryBean类配置Jackrabbit它需要JackRabbit的配置文件和主目录。注意RepositoryFactoryBean在使用本地文件系统时特别有用对于服务器环境仓库可能被注册在JNDI中此时可以使用JndiObjectFactoryBean帮助类Spring分发包的一部分检索它 bean idrepository classorg.springframework.jndi.JndiObjectFactoryBean property namejndiName valuejava:comp/env/jcr/myRepository/ /bean 或使用Spring 2.0的模式名字空间 jndi:lookup identityManagerFactory jndi-namejcr/myRepository/ 为了简化与JCR的工作模块增加了SessionFactory接口 public interface SessionFactory { public Session getSession() throws RepositoryException; public SessionHolder getSessionHolder(Session session); } SessionFactory隐藏了实现内部的认证细节因此一旦配置完成使用同一证书的会话可以很容易的被检索出来。为了利用实现的特性没有涵盖在规范中的这个接口允许检索SessionHolder。它是一个JCR模块特定类主要被用于事务和会话管理通过一种可用于每个JCR实现的缺省、通用实现但是它不支持可选特性或自定义特性如JackrabbitSessionHolder它支持Jackrabbit的事务基础结构。JCR模块提供一种简易、透明的方式来发现SessionHolder实现这些我将在以后详细提到使之很容易地插入对JSR-170其它兼容库的支持。 SessionFactory的缺省实现是JcrSessionFactory它要求一个进行工作的仓库和证书。 !-— SessionFactory -- bean idjcrSessionFactory classorg.springmodules.jcr.JcrSessionFactory property namerepository refrepository/ property namecredentials bean classjavax.jcr.SimpleCredentials constructor-arg index0 valuebogus/ !-- create the credentials using a bean factory -- constructor-arg index1 bean factory-beanpassword factory-methodtoCharArray/ /constructor-arg /bean /property /bean !-- create the password to return it as a char[] -- bean idpassword classjava.lang.String constructor-arg index0 valuepass/ /bean 这个bean声明非常简单唯一需要注意的地方是密码被提供给SimpleCredential的构造函数它只接受字符数组使用Spring工厂声明作为一种变通。 JcrTemplate JcrTemplate是JCR模块的核心类之一它提供了与JCR会话一起工作的方便方法将调用者从必须处理的打开和关闭会话、事务回滚如果底层仓库提供、以及处理其它特性中的异常等工作中解放出来 bean idjcrTemplate classorg.springmodules.jcr.JcrTemplateproperty namesessionFactory refjcrSessionFactory/property nameallowCreate valuetrue/ /bean 模板定义非常简单类似来自Spring框架的其它模板类如HibernateTemplate。 例子 既然仓库已经配置了接下来看看“Spring化”的例子之一它来自Jackrabbit的wiki页 public Node importFile(final Node folderNode, final File file, final String mimeType, final String encoding) { return (Node) execute(new JcrCallback() { /** * see org.springmodules.jcr.JcrCallback#doInJcr(javax.jcr.Session) */ public Object doInJcr(Session session) throws RepositoryException, IOException { JcrConstants jcrConstants new JcrConstants(session); //create the file node - see section 6.7.22.6 of the spec Node fileNode folderNode.addNode(file.getName(), jcrConstants.getNT_FILE()); //create the mandatory child node - jcr:content Node resNode fileNode.addNode(jcrConstants.getJCR_CONTENT(), jcrConstants.getNT_RESOURCE());resNode.setProperty(jcrConstants.getJCR_MIMETYPE(), mimeType);resNode.setProperty(jcrConstants.getJCR_ENCODING(), encoding); resNode.setProperty(jcrConstants.getJCR_DATA(), new FileInputStream(file)); Calendar lastModified Calendar.getInstance(); lastModified.setTimeInMillis (file.lastModified ()); resNode.setProperty(jcrConstants.getJCR_LASTMODIFIED(), lastModified); session.save(); return resNode; } }); } 主要区别是代码被包装在一个JCR模板中它将我们从不得不使用的try/catch语句块因为IO和Repository的需检查异常和处理会话和事务如果有的话清除工作中解放出来。值得提及的是硬编码字符串如“jcr:data”是通过JcrConstants工具类解析出来的。它知道名字空间的前缀变化并提供一种干净的方式处理JCR常数。正如你看到的我只是使例子更加健壮但是对于实际业务代码影响最小。 事务支持 使用JCR模块的一个好处就是能将Spring事务基础设施包括声明性和编程性应用于Java内容仓库。JSR 170将事务支持视为可选特性并没有强制一个标准的方式来暴露事务钩子因此每个实现可以选择不同的方法。在本文撰写时只有Jackrabbit支持事务在它的大部分操作中它通过为每个JcrSession暴露一个javax.transaction.XAResource做到这一点。JCR模块提供LocalTransactionManager用于本地事务 bean idjcrTransactionManager classorg.springmodules.jcr.jackrabbit.LocalTransactionManager property namesessionFactory refjcrSessionFactory/ /bean 为了声明事务划分我与上述事务管理器bean声明一起使用标准Spring类 !-- transaction proxy for Jcr services/facades -- bean idtxProxyTemplate abstracttrue classorg.springframework.transaction.interceptor.TransactionProxyFactoryBean property nameproxyTargetClassvaluetrue/value/property      property nametransactionManager refjcrTransactionManager/property nametransactionAttributespropsprop keysave*PROPAGATION_REQUIRED/propprop key*PROPAGATION_REQUIRED, readOnly/prop/props/property /bean bean idjcrService parenttxProxyTemplateproperty nametargetbean classorg.springmodules.examples.jcr.JcrServiceproperty nametemplate refjcrTemplate//bean/property /bean 如果要求一个JTA管理器一个简单而优雅的解决办法是使用来自Jackrabbit捐献包的jca连接器。为了使用jca你并不需要一个应用服务器因为你可以用一个可插入的JCA容器如Jencks。JCA容器的配置已经超出本文的范围但是你可以参考JCR模块例子中使用Jencks的例子。 TransactionAwareRepository 对于要求普通JCR代码的应用程序JCR模块允许用直接使用JCR API的代码透明地使用事务驱动会话。 此时可以使用TransactionAwareRepository它有一个参数是JcrSessionFactory。这样在使用Session.login()它接收定义在JcrSessionFactory中的参数创建任何新会话时如果发现有线程绑定的会话就将返回它。注意如果使用事务JCR会话就是事务性的否则你必须手动设置属性allowNonTxRepository为true配置如下要不然将抛出一个异常 bean idtransactionRepository classorg.springmodules.jcr.TransactionAwareRepositoryproperty nameallowNonTxRepository valuetrue/property nametargetFactory refjcrSessionFactory/ /bean transactionRepositorybean可以被用作一个普通的JCR仓库不关心底层机制或线程绑定会话、事务性或非事务性如果有事务关闭会话时要提交事务。 可选特性支持侦测 为了最大化代码重用但仍然允许插入可选特性如用于不同JCR实现的事务支持JCR模块使用SessionHolder接口前面已经提到同时还有SessionHolderProvider和SessionHolderProviderManager接口。用户一般不用与它们打交道因为它们是框架内部使用的但是它们代表了JCR模块主要的扩展点。 SessionHolder类被内部不同组件使用主要被事务管理器用来操作会话SessionHolderProvider和SessionHolderProviderManager处理sessionHolder创建的方式以及提供者是如何被个别使用的。缺省将使用ServiceSessionHolderProviderManager它利用JDK 1.3 Service Provider的自动发现特性。管理器将在类路径中搜索META-INF/services/org.springmodules.jcr.SessionHolderProvider条目它包含了SessionHolderProvider实现的完整限定名。Jackrabbit支持就是这样配置的JCR模块的分发包中包含一个META-INF/services/org.springmodules.jcr.SessionHolderProvider译注原文有误没有给出后面的文件名文件它只有一行 org.springmodules.jcr.jackrabbit.support.JackRabbitSessionHolderProvider 缺省SessionHolderProviderManager被JcrSessionFactory内部使用因此在工厂启动时任何客户化实现可以被获取并与合适的仓库一起使用。但是通过设置JcrSessionFactory中的SessionHolderProviderManager可以很容易的切换到一个不同的发现策略。一个可替代的发现服务是ListSessionHolderProviderManager它接收一组提供者列表可以方便地使用自定义提供如测试。 bean idlistProviderManager classorg.springmodules.jcr.support.ListSessionHolderProviderManagerproperty nameproviderslistbean classorg.mycompany.jcr.CustomHolderProvider/bean classorg.springmodules.jcr.jackrabbit.support.JackRabbitSessionHolderProvider/bean classorg.springmodules.jcr.support.GenericHolderProvider//list/property /bean bean idjcrSessionFactory classorg.springmodules.jcr.JcrSessionFactory...property namesessionHolderProviderManager reflistProviderManager/ /bean 注意每个仓库一个提供者。如果列表包含多个工作于同一仓库的提供者顺序将非常重要因为先匹配的先使用。 Java内容仓库的未来 尽管JSR-170已经于2005年5月完成Java内容仓库的工作并没有终止。JSR-283官方的后继者将聚焦于功能增强如联邦remoting客户端/服务器协议映射和扩展内容模型的能力。同时还存在着一些JSR之外的想法和项目绑定/映射框架它可以将java类转换为一个JCR树反之亦然类似ORM后端用Java内容仓库替代数据库建构于JCR之上的WebDAV服务器参见Jackrabbit的捐献包以及其他。已经出现了用于不同产品的JSR-170连接器如Alfresco、BEA Portal Server和IBM Domino。 至于JCR模块路线图包括用于几个实现的Acegi安全集成支持Spring 2.0名字空间模式它将减少XML的配置和与其它JCR实现集成。很显然JCR的看起来一片光明。 本文转自BlogJava 新浪blog的博客原文链接集成Java内容仓库和Spring如需转载请自行联系原博主。
http://www.huolong8.cn/news/284364/

相关文章:

  • 网站建设与管理教学大纲深圳地址大全
  • 方太官方网站的建设情况苏州seo报价
  • 网站所属权网页开发入门
  • 网站顶部轮播怎么做的公众号编辑器怎么使用
  • 网站开发的配置过程网站建设优化开发公司哪家好
  • 中山市做网站的公司网站制作的软件
  • 企业网站一定要花钱吗佛山网站建设专家
  • 模板网站 知乎网推获客平台
  • 广州车陂网站建设公司摄影网站 蜂鸟
  • 承德网站建设服务比较有特色的网站
  • 工具型网站有哪些网站流量平台
  • 网络营销知识网站精品设计网站
  • 网站快速排名技术wordpress采集文章后定时发布
  • 手机端做的优秀的网站设计怎么建设淘宝那样的网站
  • 网站建设部岗位职责网页视频下载用什么软件最好
  • 西安网站免费制作游戏开发入门
  • app网站搭建天津做网站企业
  • 网上快速学做网站网站建设实训进程计划
  • 青岛网站建设企业建站网站怎么做响应式
  • 西宁建设厅培训中心网站网站一直百度上搜不到是怎么回事啊
  • 目前网站开发的新技术怎么查网站哪里做的
  • 有道翻译网站 做翻译wordpress分类访问不
  • 通用搭建网站教程做英文网站地图
  • 网站建设的地方哪些人需要做网站
  • 网页ui设计网站二手书网站建设报告
  • 上海广告公司网站制作郑州网站推广招聘
  • 建设部网站信息系统重庆建设银行官方网站首页
  • 天津做网站排名虾米音乐 wordpress
  • 网站建设公司推荐万维科技东莞微信网站建设推荐
  • 全球优秀企业网站福田蒙派克e质量怎么样