在maven pom文件配置的pom里怎么配置cas

一个多maven项目聚合的实例 - 女儿2岁了还是要继续钻研技术 - ITeye技术网站
博客分类:
本文介绍一个多maven项目的实例demo,展示了聚合、继承、工程依赖、单元测试、多war聚合、cargo发布等场景
一、工程介绍
该项目由5个maven项目组成
task-aggregator是父工程,同时承担聚合模块和父模块的作用,没有实际代码和资源文件
task-common是基础工程,里面是公共的代码
task-sla是某一个业务子模块,不包含web内容
task-sla-web是某一个web子模块
task-web-dist是最外围的web工程,聚合多个web工程,形成最终的war包
依赖关系是:task-common &-- task-sla &-- task-sla-web &-- task-web-dist
二、task-aggregator
这个工程是起到聚合作用,并充当parent pom,所以没有任何实际代码和资源文件。我这里选择了平行结构,另外一种方式是树形结构,我个人感觉平行结构看起来更舒服一点
下面是pom,有所简化:
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"&
&!-- 定义公共变量 --&
&properties&
&spring.version&3.1.0.RELEASE&/spring.version&
&struts2.version&2.3.1&/struts2.version&
&hibernate.version&3.2.7.ga&/hibernate.version&
&/properties&
&modelVersion&4.0.0&/modelVersion&
&groupId&com.xxx.task&/groupId&
&artifactId&task-aggregator&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&packaging&pom&/packaging&
&!-- 待聚合模块 --&
&module&../task-common&/module&
&module&../task-sla&/module&
&module&../task-sla-web&/module&
&module&../task-web-dist&/module&
&/modules&
&!-- 配置部署的远程仓库 --&
&distributionManagement&
&snapshotRepository&
&id&nexus-snapshots&/id&
&name&nexus distribution snapshot repository&/name&
&url&http://10.78.68.122:9090/nexus-2.1.1/content/repositories/snapshots/&/url&
&/snapshotRepository&
&/distributionManagement&
&pluginManagement&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-resources-plugin&/artifactId&
&version&2.6&/version&
&configuration&
&encoding&UTF-8&/encoding&
&/configuration&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-compiler-plugin&/artifactId&
&version&2.5.1&/version&
&configuration&
&encoding&UTF-8&/encoding&
&/configuration&
&/plugins&
&/pluginManagement&
&dependencyManagement&
&dependencies&
&dependency&
&groupId&com.sun&/groupId&
&artifactId&tools&/artifactId&
&version&1.6.0&/version&
&scope&system&/scope&
&systemPath&${env.JAVA_HOME}/lib/tools.jar&/systemPath&
&/dependency&
&/dependencies&
&/dependencyManagement&
&/project&
基本上是一目了然,只是有几点注意下:
&&& 1、这里配置了&distributionManagement&,这样子项目就不需要重复配置了
&&& 2、通过&pluginManagement&,对一些插件进行了公共的配置,这里主要是为了消除构建时的告警
&&& 3、配置tools,是因为实际中发现,其他开发人员从svn上check out工程以后,有的人会报错,找不到tools.jar,这样配置以后就好了
三、task-common
该工程是公共工程,提供了项目中的公共代码,这里只包括了通用的DAO组件,作为示例。
该工程不依赖任何其他工程
该工程里有几点要点:
&&& 1、在代码内部用了Spring的注解
public abstract class GenericDAO&T& implements IGenericDAO&T& {
private Class&T& entityC
public GenericDAO(Class&T& clazz) {
this.entityClass =
@Autowired
private HibernateTemplate hibernateT
这里用到了@Autowired注解,所以最终形成的war包,必须在spring配置文件中声明HibernateTemplate类型的bean,否则会报错
我这里用的maven环境是maven3.0.4,这个版本打出的jar包,带有Directory Entries信息,所以spring的注解即使在jar包中也可生效,如果是比较老的版本,spring的注解在jar包中不好用,关于这个问题的详细描述,见另外一篇博客:/blog/1675368
&&& 2、单元测试的写法
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = "classpath:spring-test.xml")
@Transactional
public class GenericDAOTest {
@Autowired
private IBookDAO bookDAO;
public void testInsert() {
Book book = new Book();
book.setName("thinking in java");
book.setIsbn("111");
bookDAO.insert(book);
这里用到了几个注解,@RunWith是为了在spring容器环境下跑这个单元测试类,以支持依赖注入。@ContextConfiguration是声明spring配置文件的位置。@Transactional注解之后,在单元测试方法中的事务会自动回滚,这个比较方便,这样在前面执行的方法,不会对后面的方法造成影响
这个单元测试类,可以直接在maven里跑起来,让我比较惊喜。之前这样写,在ant里跑没有成功,可能是我没有找到合适的插件的原因
&&& 3、除了测试的java代码之外,还有3个资源文件,都是放在src/test/resources下,这些资源文件只在test阶段生效,package阶段不会被打包,也就是专门供测试阶段使用
这个各有利弊,优点是测试的配置文件与开发的配置文件隔离,互不干扰。缺点是配置文件似乎缺少了集中放置的地点,这样如果多个maven工程都需要跑单元测试,要共享测试用配置文件,比较麻烦一点
不过从我个人来看,也算是利大于弊。只是在每个maven项目下,都需要独立的测试相关资源文件,其实也有利于分别修改
另外,可以看到这里的hibernate映射文件,不是和model类放在一个package下,而是放在resources目录下的,这样做可以避免一些潜在的问题,也有利于后续的聚合
&&& 4、pom文件没有什么特别的,只是要引入&scope&为test的junit和spring-test
四、task-sla
该工程依赖task-common(因为用到了GenericDAO),是某一个业务模块的逻辑部分,包含了数据库访问层和业务逻辑层,但是不包括web相关的部分
这里没有什么特别要注意的,目录结构和task-common基本一样。比较特别的是可以看到Maven Dependencies里,有一个task-common工程,所以task-common里的任何修改,都可以第一时间在这个工程里体现出来,是比较方便的
关于这个问题,见另外一篇博客:/blog/1679806
另外就是前面说过的,hibernate的映射文件,应该放在src/main/resources下,而不是与Model类放在一起
五、task-sla-web
这个工程是上述task-sla工程的web层,依赖于task-sla,由于task-sla又依赖task-common,所以这个工程最终会同时依赖task-common和task-sla
然后这个工程里包含了web层的东西,包括Action类、jsp、图片、struts2的配置文件等,这些东西放在web工程里是最合适的
这里需要注意2点:
&&& 1、这个工程的packaging类型是war,而不是jar。但是最终它不会独立打出war包来,其src/main/webapp里的所有文件,都会被最外围的task-web-dist工程聚合成一个总的war
&&& 2、这个工程的WEB-INF目录下,没有web.xml(有也没用,最终会被覆盖)。默认情况下,packaging类型为war的项目,如果没有web.xml,则构建会失败,因此需要在pom里做一个配置
该项目的pom如下,省略了依赖部分:
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&groupId&com.xxx.task&/groupId&
&artifactId&task-aggregator&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&relativePath&../task-aggregator&/relativePath&
&modelVersion&4.0.0&/modelVersion&
&artifactId&task-sla-web&/artifactId&
&packaging&war&/packaging&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-war-plugin&/artifactId&
&configuration&
&failOnMissingWebXml&false&/failOnMissingWebXml&
&/configuration&
&/plugins&
&!-- 配置依赖 --&
&dependencies&
&dependency&
&groupId&org.springframework&/groupId&
&artifactId&spring-beans&/artifactId&
&/dependency&
&/dependencies&
&/project&
上面的&failOnMissingWebXml&,就是配置缺少web.xml也不使构建失败
六、task-web-dist
这个工程是最外围的web工程,起到聚合的作用,即把所有的web项目,打成最终的war包。同时,在这个工程里,放置里公共的配置文件,比如struts.xml、ssoconfig.properties等
这个工程的聚合意图十分明显,比如struts.xml
&?xml version="1.0" encoding="UTF-8"?&
&!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"&
&constant name="struts.objectFactory" value="spring" /&
&constant name="struts.ui.theme" value="simple" /&
&constant name="struts.i18n.encoding" value="UTF-8" /&
&constant name="struts.action.extension" value="action" /&
&constant name="struts.enable.DynamicMethodInvocation" value="false" /&
&constant name="struts.devMode" value="true" /&
&include file="struts2/struts-sla.xml" /&
提供了项目通用的配置,并把各子项目的struts2配置文件聚合起来。war包中的web.xml也是在这里提供的
下面是该工程的pom,也省略了依赖的配置:
&project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"&
&groupId&com.xxx.task&/groupId&
&artifactId&task-aggregator&/artifactId&
&version&0.0.1-SNAPSHOT&/version&
&relativePath&../task-aggregator&/relativePath&
&modelVersion&4.0.0&/modelVersion&
&artifactId&task-web-dist&/artifactId&
&packaging&war&/packaging&
&finalName&task&/finalName&
&!-- 合并多个war --&
&groupId&org.apache.maven.plugins&/groupId&
&artifactId&maven-war-plugin&/artifactId&
&configuration&
&packagingExcludes&WEB-INF/web.xml&/packagingExcludes&
&overlays&
&groupId&com.huawei.inoc.wfm.task&/groupId&
&artifactId&task-sla-web&/artifactId&
&/overlay&
&/overlays&
&/configuration&
&!-- 利用cargo启动容器 --&
&groupId&org.codehaus.cargo&/groupId&
&artifactId&cargo-maven2-plugin&/artifactId&
&version&1.2.3&/version&
&configuration&
&container&
&containerId&tomcat7x&/containerId&
&home&D:\apache-tomcat-7.0.29&/home&
&/container&
&configuration&
&type&standalone&/type&
&home&${project.build.directory}/tomcat7.0.29&/home&
&properties&
&cargo.jvmargs&
-Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8787
&/cargo.jvmargs&
&/properties&
&/configuration&
&/configuration&
&executions&
&execution&
&id&cargo-run&/id&
&phase&pre-integration-test&/phase&
&goal&run&/goal&
&/execution&
&/executions&
&/plugins&
&/project&
这里主要是对maven-war-plugin和cargo-maven2-plugin这2个插件进行了配置,以起到聚合war,以及通过cargo启动容器的作用
关于多war聚合,以及cargo,见另外2篇博客:/blog/1678121、/blog/1677608
七、启动构建
在task-aggregator目录下,执行mvn clean deploy或者mvn clean install,就可启动整个构建过程,并将容器启动起来,跑最终生成的war包
浏览 22329
论坛回复 /
(24 / 12146)
博主你好,我现在整合了两个web,打成一个war,我到war文件里的classes里看了,两个web的类已经合并到一起了,但是放到tomcat只是解压了,启动后访问也是404,Spring和web.xml配置文件没问题,链接也没错,能帮我解答一下吗,谢谢! 你好。404的话,说明tomcat已经起来了,但是web资源没找到。你这样说我也不好判断,请你检查一下WEB-INF先,或者尝试往根目录放一个a.html,看看直接访问是什么情况
每个工程都有很多相同的第三方jar,比如spring的jar,怎么处理?是每个工程都自己引入自己的,打包的时候只会有一份呢?还是可以大家都连接到某个位置?放一个公共资源就可以了
在分包的时候一直有个问题困扰我,每个模块有自己的jar包,包里有对应的entity使用的jpa标注,dist.war中统一配置的persistence.xml.但是他在进行持久类标注scan是只会扫描当前运行目录下class.除非通过jar-file指定引用的jar包或显式的指定class的列表。我现在用的jar-file的方式对物理目录和版本号依赖太强,测试和发布也不通一。想请教下如何处理这种独立的持久类的注解扫描的问题。感谢!!!!附上一个其他朋友分享的方案,不过还是不太理想 /topic/1131643
哈哈,我知道什么公司的~lz,最后打包成war的plugin配置要改一下,暴露了呵呵,前公司了
kyfxbl 写道rzy2009 写道 如果这是你公司正式的项目,建议你可以写一些简单的例子,没必要再把包名之类涂上,即影响视觉,又有泄露公司机密的嫌疑 有没有泄露机密,如果你看完了帖子,又知道maven的话,自然会有判断建议你看帖子还是看内容,不用太关注涂黑不涂黑什么的。既然被涂黑,自然说明不重要。你看片的时候也关注马赛克吗? 我只是开个玩笑,你没必要这么认真。文章很好,我很有所得 呵呵,兄弟,我知道你没有恶意。但是这不是可以开玩笑的事。你也是职业人,肯定也知道泄露公司机密不是好玩的
rzy2009 写道 如果这是你公司正式的项目,建议你可以写一些简单的例子,没必要再把包名之类涂上,即影响视觉,又有泄露公司机密的嫌疑 有没有泄露机密,如果你看完了帖子,又知道maven的话,自然会有判断建议你看帖子还是看内容,不用太关注涂黑不涂黑什么的。既然被涂黑,自然说明不重要。你看片的时候也关注马赛克吗? 我只是开个玩笑,你没必要这么认真。文章很好,我很有所得
如果这是你公司正式的项目,建议你可以写一些简单的例子,没必要再把包名之类涂上,即影响视觉,又有泄露公司机密的嫌疑 有没有泄露机密,如果你看完了帖子,又知道maven的话,自然会有判断建议你看帖子还是看内容,不用太关注涂黑不涂黑什么的。既然被涂黑,自然说明不重要。你看片的时候也关注马赛克吗?
关于消除这种重复配置的方法,以前我做net开发的时候,vs中用快捷方式来解决,也就是link的方式,实际上是引用一个文件,而不是重复拷贝一份文件,就是不懂这在maven中是否也可以这么操作。现在每个module下的src/test/resources下都有一份配置拷贝,可能只是稍有不同,但绝大部分大是相同的,如何避免这种重复?哦,这样啊,那我明白了最终打成的.war里,配置文件应该只有一份(多了是错的)。公共的可以放在project-web-dist里,或者project-common里。子工程特有的配置文件放在自己的src/main/resources里。最后打包之后,都会出现在WEB-INF/classes里面但是你现在说的是每个子工程自己做单元测试需要的配置文件。那这种情况下,我建议就把配置文件复制多份放在各自的子工程里就好了这个没有问题,因为不是在src/main/resources下,而是src/test/resources下面,即使你有多份重复的配置文件,也不会影响部署,只会在单元测试的时候用到而且我觉得这样也是有道理的。因为项目拆分成多个子工程以后,一般子工程就是由单独的人或者小组来维护了,自己维护自己的单元测试配置文件,比多个小组共用一份要方便。你现在因为是自己一个人开发,会觉得重复了;但是在多人开发的场景下,不共享配置文件或许是更合理的
& 上一页 1
浏览: 485018 次
来自: 深圳
qwe 写道博主你好,我现在整合了两个web ...
zwfflying 写道每个工程都有很多相同的第三方jar,比 ...
博主你好,我现在整合了两个web,打成一个war,我到war文 ...
问下博主强人:使用maven的cargo插件合并war包之后, ...
可以参考最新的文档:如何在eclipse jee中检出项目并转 ...第&13&章&单点登录第&13&章&单点登录所谓单点登录,SSO(Single Sign On),就是把N个应用的登录系统整合在一起,这样一来无论用户登录了任何一个应用,都可以直接以登录过的身份访问其他应用,不用每次访问其他系统再去登陆一遍了。Spring Security没有实现自己的SSO,而是整合了耶鲁大学单点登陆(JA-SIG),这是当前使用很广泛的一种SSO实现,它是基于中央认证服务CAS(Center Authentication Service)的结构实现的,可以访问它们的官方网站获得更详细的信息。在了解过这些基础知识之后,我们可以开始研究如何使用Spring Security实现单点登录了。13.1.&配置JA-SIG从JA-SIG的官方网站下载cas-server,本文写作时的最新稳定版&#.1。。将下载得到的cas-server-3.5.1-release.zip文件解压后,可以得到一大堆的目录和文件,我们这里需要的是modules目录下的cas-server-webapp-3.5.1.war。把cas-server-webapp-3.5.1.war放到ch103\server目录下,然后执行run.bat就可启动CAS中央认证服务器。我们已在pom.xml中配置好了启用SSL所需的配置,包括使用的server.jks和对应密码,之后我们可以通过访问CAS中央认证服务器。&#2.&登陆页面默认情况下,只要输入相同的用户名和密码就可以登陆系统,比如我们使用user/user进行登陆。&#2.&登陆成功这就证明中央认证服务器已经跑起来了。下一步我们来配置Spring Security,让它通过中央认证服务器进行登录。13.2.&配置Spring Security13.2.1.&添加依赖首先要添加对cas的插件和cas客户端的依赖库。因为我们使用了maven2,所以只需要在pom.xml中添加一个依赖即可。
&dependency&
&groupId&org.springframework.security&/groupId&
&artifactId&spring-security-cas&/artifactId&
&version&3.1.3.RELEASE&/version&
&/dependency&
如果有人很不幸的没有使用maven,那么就需要手工把去下面这些依赖库了。
spring-security-cas-3.1.3.RELEASE.jar
aopalliance-1.0.jar
cas-client-core-3.1.12.jar
大家可以去spring和ja-sig的网站去寻找这些依赖库。13.2.2.&修改applicationContext.xml首先修改http部分。
&http auto-config='true' entry-point-ref="casProcessingFilterEntryPoint"&
&intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" /&
&intercept-url pattern="/index.jsp" access="ROLE_USER" /&
&intercept-url pattern="/" access="ROLE_USER" /&
&logout logout-success-url="/cas-logout.jsp"/&
添加一个entry-point-ref引用cas提供的casProcessingFilterEntryPoint,这样在验证用户登录时就用上cas提供的机制了。 修改注销页面,将注销请求转发给cas处理。&a href="https://localhost:9443/cas/logout"&Logout of CAS&/a&然后要提供userService和authenticationManager,二者会被注入到cas的类中用来进行登录之后的用户授权。
&user-service id="userService"&
&user name="admin" password="admin" authorities="ROLE_USER, ROLE_ADMIN" /&
&user name="user" password="user" authorities="ROLE_USER" /&
&/user-service&
&authentication-manager alias="authenticationManager"&
&authentication-provider ref="casAuthenticationProvider" /&
&/authentication-manager&
为了演示方便,我们将用户信息直接写在了配置文件中,之后cas的类就可以通过id获得userService,以此获得其中定义的用户信息和对应的权限。 对于authenticationManager来说,我们没有创建一个新实例,而是使用了“别名”(alias),这是因为在之前的namespace配置时已经自动生成了authenticationManager的实例,cas只需要知道这个实例的别名就可以直接调用。创建cas的filter, entryPoint, serviceProperties和authenticationProvider。
&http auto-config='true' entry-point-ref="casProcessingFilterEntryPoint"&
&intercept-url pattern="/admin.jsp" access="ROLE_ADMIN" /&
&intercept-url pattern="/index.jsp" access="ROLE_USER" /&
&intercept-url pattern="/" access="ROLE_USER" /&
&logout logout-success-url="/cas-logout.jsp"/&
&custom-filter position="CAS_FILTER" ref="casProcessingFilter" /&
&authentication-manager alias="authenticationManager&
&authentication-provider ref="casAuthenticationProvider" /&
&/authentication-manager&
&beans:bean id="casProcessingFilter" class="org.springframework.security.cas.web.CasAuthenticationFilter"&
&beans:property name="authenticationManager" ref="authenticationManager"/&
&/beans:bean&
&beans:bean id="casProcessingFilterEntryPoint"
class="org.springframework.security.cas.web.CasAuthenticationEntryPoint"&
&beans:property name="loginUrl" value="https://localhost:9443/cas/login" /&
&beans:property name="serviceProperties" ref="casServiceProperties" /&
&/beans:bean&
&beans:bean id="casServiceProperties" class="org.springframework.security.cas.ServiceProperties"&
&beans:property name="service" value="https://localhost:8443/ch103/j_spring_cas_security_check"/&
&beans:property name="sendRenew" value="false"/&
&/beans:bean&
&beans:bean id="casAuthenticationProvider"
class="org.springframework.security.cas.authentication.CasAuthenticationProvider"&
&beans:property name="userDetailsService" ref="userService" /&
&beans:property name="serviceProperties" ref="casServiceProperties" /&
&beans:property name="ticketValidator"&
&beans:bean class="org.jasig.cas.client.validation.Cas20ServiceTicketValidator"&
&beans:constructor-arg index="0" value="https://localhost:9443/cas" /&
&/beans:bean&
&/beans:property&
&beans:property name="key" value="ch103" /&
&/beans:bean&
casProcessingFilter最终是要放到Spring security的安全过滤器链中才能发挥作用的。这里使用的customer-filter就会把它放到CAS_PROCESSING_FILTER位置的后面。这个位置具体是在LogoutFilter和AuthenticationProcessingFilter之间,这样既不会影响注销操作,又可以在用户进行表单登陆之前拦截用户请求进行cas认证了。 使用custom-authentication-provider之后,Spring Security其他的权限模块会从这个bean中获得权限验证信息。 当用户尚未登录时,会跳转到这个cas的登录页面进行登录。 用户在cas登录成功后,再次跳转回原系统时请求的页面。CasProcessingFilter会处理这个请求,从cas获得已登录的用户信息,并对用户进行授权。 系统需要验证当前用户的tickets是否有效。经过了这么多的配置,我们终于把cas功能添加到spring security中了,看着一堆堆一串串的配置文件,好似又回到了acegi的时代,可怕啊。下面运行系统,尝试使用了cas的权限控制之后有什么不同。13.3.&运行配置了cas的子系统首先要保证cas中央认证服务器已经启动了。子系统的pom.xml中也已经配置好了SSL,所以可以进入ch103执行run.bat启动子系统。现在直接访问http://localhost:8080/ch103/不再会弹出登陆页面,而是会跳转到cas中央认证服务器上进行登录。&#2.&登陆页面输入user/user后进行登录,系统不会做丝毫的停留,直接跳转回我们的子系统,这时我们已经登录到系统中了。&#2.&登陆成功我们再来试试注销,点击logout会进入cas-logout.jsp。&#2.&cas-logout.jsp在此点击Logout of CAS会跳转至cas进行注销。&#2.&注销成功现在我们完成了Spring Security中cas的配置,enjoy it。13.4.&为cas配置SSL在使用cas的时候,我们要为cas中央认证服务器和子系统都配置上SSL,以此来对他们之间交互的数据进行加密。这里我们将使用JDK中包含的keytool工具生成配置SSL所需的密钥。13.4.1.&生成密钥首先生成一个key store。
keytool -genkey -keyalg RSA -dname "cn=localhost,ou=family168,o=,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password
我们会得到一个名为server.jks的文件,它的密码是password,注意cn=localhost部分,这里必须与cas服务器的域名一致,而且不能使用ip,因为我们是在本地localhost测试cas,所以这里设置的就是cn=localhost,在实际生产环境中使用时,要将这里配置为cas服务器的实际域名。导出密钥
keytool -export -trustcacerts -alias server -file server.cer -keystore
server.jks -storepass password
将密钥导入JDK的cacerts
keytool -import -trustcacerts -alias server -file server.cer -keystore
D:/apps/jdk1.5.0_15/jre/lib/security/cacerts -storepass password
这里需要把使用实际JDK的安装路径,我们要把密钥导入到JDK的cacerts中。我们在ch103/certificates/下放了一个genkey.bat,这个批处理文件中已经包含了上述的所有命令,运行它就可以生成我们所需的密钥。13.4.2.&为jetty配置SSLjetty的配置可参考ch103中的pom.xml文件。
&connectors&
&connector implementation="org.mortbay.jetty.security.SslSocketConnector"&
&port&9443&/port&
&keystore&../certificates/server.jks&/keystore&
&password&password&/password&
&keyPassword&password&/keyPassword&
&truststore&../certificates/server.jks&/truststore&
&trustPassword&password&/trustPassword&
&wantClientAuth&true&/wantClientAuth&
&needClientAuth&false&/needClientAuth&
&/connector&
&/connectors&
&systemProperties&
&systemProperty&
&name&javax.net.ssl.trustStore&/name&
&value&../certificates/server.jks&/value&
&/systemProperty&
&systemProperty&
&name&javax.net.ssl.trustStorePassword&/name&
&value&password&/value&
&/systemProperty&
&/systemProperties&
13.4.3.&为tomcat配置SSL要运行支持SSL的tomcat,把server.jks文件放到tomcat的conf目录下,然后把下面的连接器添加到server.xml文件中。
&Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" scheme="https" secure="true"
clientAuth="true" sslProtocol="TLS"
keystoreFile="${catalina.home}/conf/server.jks"
keystoreType="JKS" keystorePass="password"
truststoreFile="${catalina.home}/conf/server.jks"
truststoreType="JKS" truststorePass="password"
如果你希望客户端没有提供证书的时候SSL链接也能成功,也可以把clientAuth设置成want。实例在ch103。}

我要回帖

更多关于 maven pom.xml在哪里 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信