【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

解密 Tomcat 日志管理:最佳实践和高级故障排除技巧 (解密通关游戏)

用户投稿2024-04-20热门资讯17

如何在tomcat5下面配置ssl和tls协议

1.快速上手下面描述使用的变量$CATALINA_HOME指的是Tomcat 5的安装目录,大部分目录都基于它来解析。 不过,如果你通过使用CATALINA_BASE目录来运行Tomcat 5的多个实例,则应该使用$CATALINA_BASE替代这些引用。 要在Tomcat 5上安装、配置SSL,请按以下步骤做,如果需要更多信息,请看文档的剩下部分。 1.如果你运行的是JVM 1.3,请从下载JSSE 1.0.3(或更新版),然后扩展安装,或设置一个环境变量JSSE_HOME指向安装的目录。 2.执行下面的命令创建一个证书keystore:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSAUnix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA并指定密码:changeit。 3.取消$CATALINA_HOME/conf/中SSL HTTP/1.1 Connector的注释并做必要的调整。 简介SSL(Secure Socket Layer)是一种能让web浏览器和服务器在建立一个安全连接的基础上进行通信的技术。 这意味着一端将数据加密后发送、传输,在另一端处理前解密。 这是一个双向过程,服务端和客户端对所有要发出的数据都进行加密。 另一个重要的方面是鉴权。 这意味着你的最初和web服务器的通信是建立在安全连接基础上的。 服务器将给你的web浏览器一套证书形式的信任状,来证明这个站点是它所声称的那一个站点。 在某种情况下服务器也会向你的浏览器请求一个证书,要求证明你是你所声称的那个人。 这就是客户身份认证,尽管在实际应用中是business-to-business交易而不是个人用户。 大部分使用了SSL的web服务器不要求客户认证。 和Tomcat注意,只有当Tomcat以独立模式运行时,才通常需要利用安全sockets来配置它。 当Tomcat主要是作为运行在其它web服务器(如Apache或Microsoft IIS)后的Servlet/JSP容器时,通常需要配置主web服务器来处理从用户来的SSL连接。 典型的,这个服务器将处理所有SSL有关的功能,然后在解密那些请求后再把以Tomcat为目的的请求转发给Tomcat。 同样的,Tomcat将返回没经过加密的响应,由主服务器加密后发给用户浏览器。 在这种情况下,Tomcat知道主服务器和客户端的通信是建立在安全连接上的(因为你的应用需要能够知道这个),但本身不参与加密或解密。 4.证书(Certificates)为了实现SSL,web服务器必须有一个针对每个接口(IP地址)的接受安全连接的相关证书。 在这个设计背后的理论是服务器应该提供某种‘你觉得它的所有者是谁的担保,特别是在接受任何敏感信息前。 然而对证书更深的解释超过了本文档的范围,可以把证书看作一个对Internet地址的digital drivers license。 它声明了这个站点是什么公司的和一些关于站点所有者或管理员的基本联系信息。 drivers license是被所有者加密签名的,因此对任何其它人来说,伪造都是极端困难的。 对和电子商务或其它任何商业交易有关的网站来说,身份验证是一个重要问题。 证书通常从一个著名的认证授权机构(Certificate Authority)比如VeriSign或Thawte处购买。 CA将为它承认的证书担保,这些证书都能有效的被电子验证。 因此如果你信任CA承认的证书,那么你就可以相信证书的有效性。 然而在很多情况下,身份鉴定不是真正所关心的。 管理员可能只不过想确保连接中的服务器传输和接收的数据是秘密的且不被网上其它任何想偷听的人所窃听。 幸运的是,Java提供了一个叫keytool的相对简单的命令行工具,它能方便的创建一个自签名的证书。 自签名证书只是用户生成的证书,它不会被任何著名的CA所官方注册,因此并不是真正可信的担保。 这对你来说可能重要也可能不,取决于你的需要。 5.运行SSL的小技巧当一个用户第一次访问你的网站的安全页面时,通常会给他一个包含证书详细信息(比如公司和联系名称)的对话框,并问他是否原意接受证书有效且继续交易。 一些浏览器会提供一个永久接受该证书的选项,这样用户就不必为每次访问你的网站被提示而烦恼了。 一旦被用户认可,证书将在整个浏览器的会话期间内被认为有效。 虽然SSL协议被设计为有足够有效的安全性,但加密/解密从性能上考虑是一个昂贵的计算处理。 并不是整个web应用都必需严格的在SSL上运行,开发者能够挑选哪些页面需要安全连接,哪些不需要。 对一个适度繁忙的站点,仅仅将某些可能交换敏感信息的页面运行在SSL下是一种惯例。 这通常包括登录页面、个人信息页面和购物车检查页面(信用卡信息可能会被发送)。 一个应用里的任何页面都可以通过一个安全socket请求,只要在地址前用前缀https:替代http:。 任何完全要求安全连接的页面应该检查和请求的协议类型,并采取https没有指定的适当的动作。 在安全连接上使用基于名字的虚拟主机会有问题,这是SSL协议本身的设计局限。 SSL的握手,就是客户浏览器接受服务器证书的过程,必须发生在HTTP请求达到之前。 结果,包含性能主机名的请求信息不能在认证前确定,因此不可能分配多个证书给一个IP地址。 如果在一个IP上的所有虚拟主机都需要依靠相同的证书鉴别,那么附加的虚拟主机不应干扰服务器上SSL的正常操作。 然而,大部分客户浏览器会依靠证书的域名列表比较服务器的域名(即便是正式的、CA签名的证书)。 如果域名不匹配,则浏览器会向用户显示一条警告。 通常,只有基于地址的虚拟主机普遍在正式场合下使用SSL。 6.配置6.1下载并安装JSSE从上下载版本1.0.3以上的Java Secure Socket Extensions (JSSE)包。 如果你是从源代码安装的Tomcat,那么可能已经下载了这个包。 如果你运行的是JDK 1.4.x,这些类已经直接集成到JDK中了,可以跳过这一步。 解压后,有两种方法让它对Tomcat可用(选择一种):1.通过复制三个JAR文件(、和)到$JAVA_HOME/jre/lib/ext目录将JSSE作为扩展安装。 2.创建一个新的环境变量JSSE_HOME,将其指向你解压的JSSE目录的绝对路径。 6.2准备证书KeystoreTomcat通常只在JKS或PKCS12格式的keystores上执行。 JKS是Java的标准Java KeyStore格式,并且是命令行工具创建的格式,此工具在JDK中。 PKCS12是一个internet标准,且能够通过OpenSSL和Microsofts Key-Manager操纵。 不过通常对PKCS12的支持有些限制。 要导入一个存在的证书到JKS keystore,请阅读关于keytool的文档(在JDK文档包中)。 要导入一个存在的被你自己的CA签名的证书到使用OpenSSL的PKCS12 keystore,要执行一条象下面这样的命令:openssl pkcs12 -export -infile -inkey \-outfile mycert.p12 -name tomcat -CAfile \-caname root -chain需要更多高级用法,请参考OpenSSL文档。 要创建一个临时的,包含单独的自签名的证书,在终端上执行下面的命令:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSAUnix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA(RSA算法是首选的安全算法,并且确保了和其它服务器、组件的兼容性。 )此命令将在你运行的目录下创建一个新文件,文件名为。 要指定文件的地址,在-keystore参数后跟文件的全路径。 你需要在后面描述的配置文件中反映出这一变化。 例:Windows:%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA \-keystore \path\to\my\keystoreUnix:$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA \-keystore /path/to/my/keystore执行此命令后,会提示你输入keystore的密码。 Tomcat使用的缺省密码是changeit(全小写),你也可以自己指定。 同时也需要在后面描述的中指定自定义的密码。 接下来会提示你关于此证书的说明,比如公司、联系名等等。 此信息会显示给要访问你的安全页面的用户,因此请确保此处提供的信息和用户期望的匹配。 最后,会提示你输入key password,这个password是这个证书特有的(区别于任何其它存储在同一个keystore文件中的证书)。 你必须使用和keystore相同的密码。 (通常keytool的提示会告诉你直接回车会自动完成此项。 )如果所有的都完成了,你现在就有一个能给服务器使用的包含证书的keystore文件了。 6.3编辑Tomcat配置文件最后一步是在$CATALINA_HOME/conf/中配置你的secure socket。 在安装好的Tomcat里缺省中已经包含了一个SSL connector的元素样本。 看起来如下:<-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->你会注意到Connector元素缺省被注释了,因此你需要删除它周围的注释标签。 接着你可以自定义一些属性。 要更多各种选项的信息,请参考Server Configuration Reference。 下面的讨论只覆盖建立SSL通信时最感兴趣的那些属性。 port属性(缺省为8443)是Tomcat监听安全连接的TCP/IP端口号。 你可以将它改成任何你需要的端口号(如https通信的缺省端口443)。 然而在许多操作系统上,Tomcat要使用一个1024以下的端口需要做一些特别的设置(这不在本文档范围内)。 如果改变了此处的端口号,应该同时改变在non-SSL connector上redirectPort属性的值。 作为Servlet 2.4 Specification中所必需的,这允许Tomcat自动重定向用户访问有安全限制的页面的请求,指出需要SSL。 还有一些其它的选项配置SSL协议。 你可能需要增加或改变下面的属性值,取决于你开始对keystore的配置:clientAuth 如果想要Tomcat为了使用这个socket而要求所有SSL客户出示一个客户证书,置该值为true。 keystoreFile 如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫的文件),则加上该属性。 可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。 keystorePass 如果使用了一个与Tomcat预期不同的keystore(和证书)密码(changeit),则加入该属性。 keystoreType 如果使用了一个PKCS12 keystore,加入该属性。 有效值是JKS和PKCS12。 sslProtocol socket使用的加密/解密协议。 如果使用的是Sun的JVM,则不建议改变这个值。 据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。 这种情况下,使用SSL。 ciphers 此socket允许使用的被逗号分隔的密码列表。 缺省情况下,可以使用任何可用的密码。 algorithm 使用的X509算法。 缺省为Sun的实现(SunX509)。 对于IBM JVMS应该使用ibmX509。 对于其它JVM,参考JVM文档取正确的值。 truststoreFile 用来验证客户证书的TrustStore文件。 truststorePass 访问TrustStore使用的密码。 缺省值是keystorePass。 truststoreType 如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。 有效值是JKS和PKCS12。 如果创建的keystore文件不在Tomcat认为的缺省位置(一个在Tomcat运行的home目录下的叫的文件),则加上该属性。 可以指定一个绝对路径或依赖$CATALINA_BASE环境变量的相对路径。 keystorePass如果使用了一个与Tomcat预期不同的keystore(和证书)密码(changeit),则加入该属性。 keystoreType如果使用了一个PKCS12 keystore,加入该属性。 有效值是JKS和PKCS12。 sslProtocolsocket使用的加密/解密协议。 如果使用的是Sun的JVM,则不建议改变这个值。 据说IBM的1.4.1版的TLS协议的实现和一些流行的浏览器不兼容。 这种情况下,使用SSL。 ciphers此socket允许使用的被逗号分隔的密码列表。 缺省情况下,可以使用任何可用的密码。 algorithm使用的X509算法。 缺省为Sun的实现(SunX509)。 对于IBM JVMS应该使用ibmX509。 对于其它JVM,参考JVM文档取正确的值。 truststoreFile用来验证客户证书的TrustStore文件。 truststorePass访问TrustStore使用的密码。 缺省值是keystorePass。 truststoreType如果使用一个不同于正在使用的KeyStore的TrustStore格式,加入该属性。 有效值是JKS和PKCS12。 完成这些配置后,要重启Tomcat。 你将能通过访问任何Tomcat支持的web应用。 如:现在你应该看到通常的Tomcat的splash页面(除非你修改了ROOT web应用)。 如果没有看到,下面的节有一些解决问题的技巧。 7.从一个CA安装一个证书为了从一个CA(如,或)获得并安装一个证书,应该已经阅读过前面的小节,现在跟随下面的指导:7.1创建一个本地Certificate Signing Request (CSR)为了从你选择的CA获得一个证书,应该先创建一个所谓的Certificate Signing Request (CSR)。 CSR将被CA用来创建一个证明你的站点安全的证书。 要创建CSR,遵循下面的步骤:创建一个本地证书:keytool -genkey -alias tomcat -keyalg RSA -keystore注意:在一些情况下,为了创建一个运转的证书,你必须在字段first- and lastname中输入你的网站的域名(如)。 然后创建CSR:keytool -certreq -keyalg RSA -alias tomcat -file -keystore现在,你有了一个叫的文件,你可以将它提交到CA(参考CA网站上的文档怎样做)。 然后就得到了证书。 7.2导入证书现在,你有了自己的证书,你可以将它导入到本地keystore。 首先,必须导入一个所谓的Chain Certificate或Root Certificate到你的keystore。 然后你可以继续导入你的证书。 7.2.1从你获得证书的CA下载Chain Certificate:对于,去对于,去对于,去将Chain Certificate导入到keystore:keytool -import -alias root -keystore \ -trustcacerts -file7.2.3最后,导入你的新证书:keytool -import -alias tomcat -keystore \ -trustcacerts -file8.解决问题这里有一个安装SSL时常见的问题列表,和它们的解决方法:1.在日志文件中出现的错误。 JVM没找到JSSE JAR文件。 请照下载和安装JSSE节的指导做。 启动时,出现: {some-directory}/{some-file} not found的错误。 一个可能的解释是Tomcat没有找到keystore文件。 缺省的,Tomcat认为该文件在Tomcat运行的home目录下,名为 。 如果该文件在其它地方,则需要在Factory元素中加入keystoreFile属性。 启动时出现: Keystore was tampered with, or password was incorrect的错误。 假设确实没人篡改过keystore文件,最大的可能是Tomcat使用了一个和创建keystore文件时不同的密码。 要修正它,可以重新创建keystore文件或在Factory中加入keystorePass属性。 记住:密码是区分大小写的。

java, srping如何得到bean的一个问题,以下是程序其中的一段代码

操作简单,要求硬件配置低。 量级主要是看容器的依赖性所决定的,依赖性越小,越轻量, Jim Rivera是 BEA 公司的一位技术主管,负责通过技术传播推广BEA 产品的应用。 Jim 于1999 年加入BEA,担任 BEA WebLogic Server 6、7 和8 版本的技术产品经理。 在这个岗位上,Jim 负责各种服务器组件的策略和路线图,包括 EJB、Web services、XML 和集群。 Jim 在dev2dev 上有一个blog。 dev2dev 通过电子邮件采访了 Jim,获得他对轻量级Java、应用程序框架和持久性框架,以及它们与应用服务器上企业计算的关系的看法。 轻量级Java dev2dev: 您是如何定义“轻量级Java”的? Jim: 我认为,在Java 应用程序开发环境中,“轻量级Java”主要是指两个东西:简化的编程模型和更具响应能力的容器。 轻量级Java 旨在消除与传统 J2EE API 有关的不必要的复杂性和限制。 它也将缩短应用程序的部署时间,这对于支持开发最佳实践(比如频繁单元测试)非常重要。 dev2dev: 对您来说哪种轻量级技术是最重要的,轻量级Java 对终端用户有什么帮助? Jim: 很显然,控制反转 (IoC)模式在这个领域有着重大的影响。 使用IoC,开发人员不需要编写复杂的代码来执行查询、处理基础架构异常或管理连接,就能够解决对象依赖性问题。 这有助于简化代码、将业务逻辑与基础架构分离,从而使应用程序更易于维护。 轻量级Java 的另一个关键特征是,它不会强迫业务对象遵循平台特定接口。 这允许开发人员在普通旧式Java 对象(POJO)中实现业务逻辑,从而提高生产率。 与具体的类相反,当把开发的最佳实践与界面相结合时,这些特性也使得对代码进行单元测试容易得多。 由于业务逻辑实现在 POJO中,所以不再需要将对象部署到重量级容器中以在单元测试中练习它。 因此,将对象宿主在诸如 JUnit 之类的简单测试环境中和为快速迭代单元测试“模拟”外部依赖性就变得微不足道了。 dev2dev: 作为一个技术传播者,您一定目睹了许多新的和已部署的技术。 您是否看到了转向轻量级技术的趋势? Jim: 当然。 在早期的采用者当中,明确地存在转向诸如 Spring、Hibernate 和Beehive 之类框架的趋势。 它在应用程序的构建方式上有了明显的不同,对未来 J2EE技术的方向有着积极的影响。 例如,EJB 3.0就基本上是以使得轻量级Java盛行的概念为基础的。 重量级 dev2dev:人们在想起应用服务器供应商时,通常把它们置于“重量级阵营”。 我想您正在努力改变这种状况,对吧?换言之,许多人认为应用程序供应商已经在实现重量级组件(比如 EJB 2.0)上付出了很大的代价,它们不愿意轻易放弃这些成果。 Jim: 首先,我认为没有理由放弃在 EJB 上的现有投资,因为在某些场景中它仍然是最好的技术,例如当您希望通过 RMI远程公开业务服务时。 当然,诸如 EJB 之类的开放标准在保护客户投资方面的价值也不能低估。 已经说过,我觉得人们经常过分强调 EJB在应用服务器中的实际价值。 尽管这一点未必对所有的应用服务器供应商都适用,但是 BEA 只投入了相对较少的一部分开发资源来支持 J2EE API。 我们工作最主要的目标是为宿主应用程序构建最可靠、可伸缩和容错的内核。 这些品质以及分布式事务服务、高速消息传递、遗留系统集成、高级 Web 服务、配置管理、诊断和故障排除和高级安全性,代表了 WebLogic Server 的真正价值,而且对总体拥有成本(TCO)有着巨大的影响。 幸运的是,这些附加值对基于Spring 或Beehive 的应用程序的相关性和适用性与采用EJB 构建的应用程序是一样的。 虽然轻量级Java 技术使得应用程序的开发和维护更容易,但是它们不会代替真正高端应用服务器的品质。 实际上,我们认为轻量级Java 与WebLogic Server 是一致的。 dev2dev: BEA 有没有一个轻量级 Java 策略?BEA 实现轻量级 Java 的方法是什么? Jim: 我们的策略是接纳所有有利于提高开发人员生产率、在市场上为部署这些技术提供最佳平台的技术。 轻量级 Java有助于降低开发成本,WebLogic Server 则有助于降低运营成本,它们是一个非常强大的组合。 应用程序框架 dev2dev:由BEA赞助的Beehive项目显然是一个轻量级 Java组件模型。 您能否谈谈关于 Beehive 的情况,以及它在你们的整个策略中的地位? Jim: Beehive是一个应用程序框架,致力于使J2EE 应用程序和基于SOA 的应用程序的开发更容易,它基于我们发布WebLogic Workshop 的经验。 它基于 POJO 和用于配置依赖性、服务质量等的元数据提供一个编程模型。 元数据以 J2SE 5.0 代码注解和外部 XML文件的形式获得支持。 存在一些用于访问 J2EE资源、定义业务和 Web 服务以及基于 MVC模式开发 Web 应用程序的组件。 在我们努力提高开发人员生产率、巩固 Java 整体市场的过程中,Beehive 是非常关键的一部分。 dev2dev: Beehive 可以被认为是一个“应用程序框架”。 在Spring Framework中提供了一种非常流行的轻量级 Java 方法。 Spring(以及其他类似的框架)对于 BEA 有多重要? Jim: 任何能够帮助我们的客户提高生产率的东西都对我们非常重要。 我们欢迎并且接纳这些技术,在适当的时候也可以在技术层面上集成或者共享这些技术。 dev2dev: 你们考虑过明确支持这些框架吗? Jim: 就像我原来说过的,WebLogic Server具有很多方面的特性,能够提供基于轻量级 Java 技术的应用程序。 许多都是隐含的,然而在某些情况下,最小量的集成工作就能为轻量级 Java 开发人员提供重要的价值。 举个例子,当今存在的一些适配器允许 Spring 应用程序使用 WebLogic Server 的分布式事务能力,无需改变任何应用程序代码。 我们正在调查许多其他的机会,当然也一直在倾听客户的需求。 dev2dev: 我们已经看到轻量级框架对EJB 3 的一些影响。 您认为这会扩展到J2EE的其他方面吗? Jim: 是的。 我认为 JSR 175(即Java元数据)对于简化 J2EE 编程模型是一种关键的支持技术。 EJB 3.0使用了它,而且它也是 JSR 181(即Web Services 元数据,一个BEA 倡导的规范)的基础。 没有理由相信它会就此停止。 轻量级持久性 dev2dev: IoC 容器看起来是轻量级 Java 的中心。 另外的一个关键因素是POJO 和轻量级持久性。 您能针对这个问题谈谈看法吗? Jim: 同样,共同的主题是简化编程模型。 没有比POJO更简单的了。 当然,企业开发要求我们有能力应用附加的品质,比如持久性规则、事务语义和 POJO 的安全约束。 盛行很广的方式是在元数据中定义这些品质,要么作为代码注解,要么放在外部文件中。 dev2dev: 您是否觉得因为有多种方法用于完成持久性这样的事情而存在一些危险?比如,我们很快将会有EJB 2、EJB 3、JDO、Hibernate,等等。 Jim: 我认为这只是成熟领域的一个实际情况。 多年来,J2EE 规范没有完全涵盖这个特定的领域,自然就会导致其他规范的出现。 就我所知道的在 JCP中发生的事情,我们似乎正在走向统一。 这对于整个行业来说是一件好事。 未来 dev2dev: 您能预见一下轻量级 Java和 BEA 的未来吗? Jim: 我们将会继续活跃于这个领域中,既通过诸如 Apache Beehive、XMLBeans、Eclipse和JCP 之类的渠道推动创新,又吸收诸如 Spring 这样的其他领先技术,并且为了客户的利益而展开协作。 艾伯特.爱因斯坦曾经说过:“一切都应该尽可能地简单,但是不能更简单。 ”确实如此,简化一门理论的基本假设,使我们可以专注于真正关键的地方,这正是一直以来对科学真理的追求。 企业软件开发同样如此。 提供一个将复杂的事物(例如,事务、安全或持久性)对开发者进行隐藏的应用框架是简化企业软件开发的关键。 一个设计良好的框架可以提高代码重用率、开发者的生产力及软件的质量。 然而,现有J2EE1.4的EJB2.1框架被普遍认为设计差,且过于复杂。 不满于EJB2.1的框架结构,Java开发者尝试了各种各样的中间件服务传递方法。 最引人注目的是,以下两个框架引起了开发者极大兴趣并得到了大量正面的反馈。 他们以未来企业Java应用所选框架的姿态展现。 Spring框架虽然很流行但并不是一个标准的开源框架。 它主要由Interface21 Inc开发和控制。 Spring框架结构是基于依赖注入(Dependency Injection (DI))的设计模式。 它可以独立或在现有的应用服务器上运行,而且大量地使用了xml配置文件 EJB3.0是由Java Community Process (JCP)制订的标准框架,为所有主要的J2EE厂商支持。 JBoss已经提供了试用版EJB3.0标准的开源或商业性质实现。 EJB3.0充分利用了Java的注释 这两个框架结构都有一个共同核心设计理念:将中间件服务传递给耦合松散的POJOS (Plain Old Java Objects, 简单洁净Java对象)。 这样的框架利用截取执行上下文或在运行时将服务对象注入POJO来把应用服务“缠绕”到POJO。 POJO本身并不关心这种“缠绕”,对这种框架结构也没有什么依赖。 因此,开发者可专注于业务逻辑和脱离框架的POJO单元测试。 除此之外, 由于POJO并不须要继承框架的类或实现其接口,开发者能够极其灵活地搭建继承结构和建造应用。 然而,在拥有同一理念的同时,两个框架结构使用不同的方式来传递POJO服务。 许多书籍或文章都将Spring 或EJB3.0和EJB2.1做了比较,但是对Spring 和EJB3.0的比较并没有仔细研究过。 在本文中,我将对Srping和EJB3.0框架背后的关键不同处进行考察,并讨论其优缺点。 本文的观点也适用于其它更少为人知的框架,因为他们都是对“耦合松散的POJO”的设计。 希望这篇文章可以帮助你选择适合你需求的最好框架。 厂商无关性 开发者选择Java平台其中最引人注目的理由之一:厂商无关性。 EJB3.0正是一套设计为厂商无关的开放性标准。 EJB3.0标准为所有企业Java社团里开源或商业性质厂商所开发和支持。 它将开发者与应用服务器实现完全隔离。 例如,JBoss的 EJB3.0实现基于Hibernate,Oracle的基于TopLink,但是开发者并不须要学习Hibernate- 或TopLink的具体API来使应用可在Jboss或Oracle上运行。 厂商无关性使EJB3.0与现今其它POJO中间件框架区别开来。 但是,正如许多EJB3.0评论家迅速所指出的,在本文撰写时EJB3.0标准还没有到达一个最终版本。 大概还有一到两年的时间EJB3.0才能广泛地为所有主要J2EE厂商所支持。 即使你的应用服务器本身不支持EJB3.0,你仍然可以通过下载安装”内嵌的”EJB3.0产品来运行EJB3.0的应用。 例如,JBoss的内嵌EjB3.0是开源产品且可以在任何J2SE5.0兼容的环境运行(例如, 在任何Java服务器上),此产品正处于软件测试阶段。 其它厂商不久也将发布自己的内嵌EJB3.0产品,特别是针对标准中关于数据持久性的部分。 另一方面,Spring一直以来都是非标准的技术,在未来可预知的一段时间内这种情况将持续下去。 虽然你可以在任何应用服务器上使用Spring框架,Spring应用会被锁入在Spring本身和你选择整合进Spring的具体服务中。 Spring框架是一个开源项目,但同时它有一个XML格式的配置文件和编程接口。 当然任何一个非标准的产品都会有这种“锁入”(lock-in)的情况,并不是Spring特有的。 但Spring应用的长期生存能力仍然还得托Spring这个项目的福(或者是Interface21公司,它雇佣了大部分Spring核心开发人员)。 除此之外,假如你用到任何一个具体的Spring服务,例如,Spring事务管理器或则Spring MVC,你也会被锁入到这些API里。 Spring的应用对终端用户是不可知的。 例如,对数据持久服务,Spring框架兼容不同的DAO和JDBC的模版帮助类,如Hibernate, iBatis, 和 JDO。 所以假如你需要为spring应用切换在数据持久化服务(例如从JBDC到Hibernate),你需要修改你的代码以适合新的模版帮助类。 服务整合 从一个很高的角度上看,Spring框架处于应用服务器和服务库的上方。 服务整合的代码(如,数据访问模板和帮助类)属于框架,并暴露于应用开发者。 相反,EJB3.0框架与应用服务器高度整合,服务整合代码也包装在一个标准接口后面。 因此,实现EJB3.0的厂商可以大大地优化整体性能和提升开发者的体验。 例如,在JBoss EJB3.0的实现中,当你在用EntityManager持久化一个Entity Bean时,后台的Hibernate会话事务已经自动地帮定到调用方法的JTA 的事务上,在JTA 事务提交的同时Hibernate会话事务也提交了。 你甚至可以使用一个简单的 @PersistenceContext 注释(稍候例子展示)将EntityManager和它后台的Hibernate事务绑定到一个stateful session bean的应用事务中。 在一个会话中应用事务横跨多个线程,这在事务性网页应用很有用,例如,多页面的购物车。 由于高度整合的EJB3.0的框架,使简单、集成的编程接口成为可能。 Oracle EJB3.0框架和其后台的Toplink持久化服务也同样程度地整合。 另一个EJB3.0整合服务的绝好例子就是集群支持。 假如你在一个服务器集群上部署了一个EJB3.0的应用,所有容错(fail-over)、负载均衡、分布式缓冲和状态复制都已经自动为应用所获得可用。 后台的集群支持被隐藏在EJB3.0的框架后面,对EJB3.0开发者来说这些都是完全透明不可见的。 在Spring里,很难优化框架和服务之间的通讯。 例如,为了使用Spring里的声明事务服务来管理Hibernate事务,你必须显示地在XML文件中配置Spring TransactionManager和Hibernate SessionFactory对象。 Spring必须电显示地管理横跨多个HTTP请求的事务。 除此之外,没有别的方法均衡Spring应用里的集群。 服务组合的弹性 由于Spring的服务整合代码作为编程接口的一部份暴露在外,应用开发者有按自己需求装配服务的弹性。 这个特点使你能够组合自己的轻量级应用服务器。 Spring的一个普遍用法就是将Tomcat和Hibernate组合在一起支持数据库驱动的web应用。 在这种情况,Spring本身提供事务服务,Hibernat提供持久化服务——这种设置创建了一个袖珍型的应用服务器。 EJB3.0应用服务器典型地不提供这种根据需求任你挑捡服务的弹性空间。 大多数时间,你得到的只是一系列包装好的特性,其中一些你可能根本就不需要。 但是如果应用服务器像JBoss一样提供一个模块性的内部设计,那么你可以只取其中一部分,而把不必要的部分剥去。 在任何情况,去自定义一个功能强大的应用服务器是没有什么价值的。 当然,假如应用已经超过单个点,那么你应该加入常用服务器上的服务,例如,资源池(resource pooling),消息队列(message queuing)和集群(clustering)。 就总体的资源消耗而言,Spring解决方法和其他EJB3.0解决方法一样是重量级的。 在Spring框架里,具有弹性的服务装配使得将虚拟对象而不是真正的业务对象绑定到应用中做脱离容器的单元测试更简单。 在EJB3.0应用中,大多数组件都是简单POJO,他们可以很容易地在容器外被测试。 但是对于与容器服务相关的对象(例如持久化实实体管理器EntityManager)建议用容器内测试。 因为这样会比虚拟对象测试方法更简单,强壮及准确。 XML Vs.注解 从应用开发者的观点上来看,Spring的编程开发接口主要基于XML配置文件而EJB3.0广泛地应用Java注解。 XML可以表达复杂的关系,但是它也冗长且不够健壮;注解简单明了,但是很难在注解里表达复杂或继承性的关系。 Spring选择XML或EJB3.0选择注解都是有他们两者框架后的体系结构决定的。 因为注解只能容纳很少的配置信息,只有整合前的框架(重头戏都在框架里)才可以把广泛地使用注解作为配置选择。 正如我们所讨论过的,EJB3.0刚好符合这个要求,而Spring作为一个普通的DI框架并不符合。 当然,EJB3.0和Spring都相互取长补短,在某种程度上他们都支持XML和注解。 例如,在EJB3.0中,XML配置文件作为一个可选的重载机制来改变注解的默认行为。 注解也可以配置一些Spring服务。 通过例子是学习XML和注解方式之间差异的最好方法。 在下面几个环节里,让我们来看看Spring和EJB3.0是怎样提供关键服务给应用的。 声明性服务 Spring和EJB3.0都将运行时服务(例如,事务、安全、日志和配置服务)绑定到应用。 因为这些服务于应用的业务逻辑是没有直接联系,他们只是由应用本身管理。 换句话说,这些服务在运行时由容器透明地应用到应用中。 开发者或是管理者配置容器,准确地告诉它什么时候怎样应用这些服务。 EJB3.0运用Java注解来配置声明性服务,而Sring使用XML配置文件。 在大多数情况下,EJB3.0注解方式对于这种服务更简单明了。 这里有一个在EJB3.0中将事务服务运用到POJO的例子。 public class Foo} 你也可以为一个代码段声明多个属性,应用多个服务。 这是一个在EJB3.0里同时应用事务和安全服务到POJO的例子

运维工程师需要掌握什么技能

合格的运维人员需要掌握的技能如下:

1、Linux系统基础,Linux基础知识和命令使用,及用户和权限等核心知识点。

2、Linux系统管理,Linux从进程、资源、任务、文件、软件包、磁盘等管理方法。

3、Linux企业级常用服务,如DNS、FTP、Http、mail。

4、Linux企业级安全原理和防范技巧以及网络和安全Linux安全架构、安全威胁模型、以及加密、解密等原理,常见攻击和防范手段。

5、Shell编程,Shel脚本基本用法,需要学习一些企业级常见脚本用法。

6、MySQL应用原理及管理Mysql安装、管理、授权、增删改查。

7、http服务代理缓存加,http高级协议应用、缓存、web服务nginx。

8、企业级负载集群企业级4层负载均衡LVS、和7层负载均衡nginx以及haproxy的应用。

9、企业级高可用集群高可用集群原理,实现以keepalived为核心的高可用集群,以及主从高可用、双主。

10、运维监控zabbix企业级监控体系以及zabbix流行开源监控系统的功用及架构。

11、云计算运维自动化ansible、puppet等运维自动化解决方案。

12、WEB服务体系架构WEB服务体系架构,JSP体系、tomcat、CDN、缓存原理、压测、评估。

13、大型互联网集群架构和实战方案LB集群:nginx、Haproxy、LVSHA集群、动静分离。

14、MySQLDBA实战技能和优化数据库参数优化、分库分表、备份方案、数据恢复策略、主从复制、读写分离、连接池及sharding技术、MHA等。

15、企业级云计算0penstackKeystone、Glance、Nova核心组件、网络模块、块存储服务等。

16、企业级大数据Hadoop运维实战列式数据库HBase基础原理、安装配置及其应用、Zookeeper集群构建、hadoop实现Namenode高可用。

17、企业级虚拟化KVM实战KVM环境:KVM的安装、配置及应用。

18、NoSQL企业级应用Nosql应用,如redis、MongoDB复制、集群等高级应用。

解密 Tomcat 日志管理:最佳实践和高级故障排除技巧 (解密通关游戏) 第1张

19、企业级日志收集系统ELK实战海量数据曰志收集系统ElasticsearchLogstashkibana应用。

20、可持续化集成Jenkinsgithub企业级应用。

21、虚拟化容器DockerLinux轻量虚拟化Docker,Docker的原理和安装,配置以及应用。

22、企业级K8S实战组件功能、安装、配置、企业级应用场景和常见故障分析。

23、Linux系统调优实战从内存、CPU、进程调度、磁盘IO、网络参数等全面讲解Linux系统调优。

24、Python编程基础,Python安装、逻辑判断、模块使用等。

25、综合能力提升表达能力、团队协作能力、执行能力、胜任力等。

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

解密 Tomcat 日志管理:最佳实践和高级故障排除技巧 (解密通关游戏) 第2张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!