在开源中国上发现一个简单好用的集成框架,地址:https://www.oschina.net/p/spring-shiro-training ,项目中已经有了基本的权限管理,正好手头有一个小型的项目,于是直接在这个基础上开发。
1. 开发环境搭建
开发环境:JKD7+Tomcat7+Eclipse4.4+MySQL
运行源代码提示如下错误:
解决办法:
在pom.xml中添加下面的依赖
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
参考:http://xyly624.blog.51cto.com/842520/859833
2. 框架集成Webservice
我的项目需要增加集成Webservice功能,直接参考这个地址( http://blog.csdn.net/hbsong75/article/details/41207585 )进行配置,没有成功,可能是我的开发环境与文章作者的环境有些差别。又经过半天的努力终于配置好了,记录过程如下:
2.1 添加依赖包
在pom.xml中添加依赖包
<!--cxf webservice 集成配置 -->
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxws</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-frontend-jaxrs</artifactId>
<version>${cxf.version}</version>
</dependency>
<dependency>
<groupId>org.apache.cxf</groupId>
<artifactId>cxf-rt-transports-http</artifactId>
<version>${cxf.version}</version>
</dependency>
2.2 版本号
cxf 版本号注意要填写3.0.3,我用了其他的版本jar包下载不下来
<cxf.version>3.0.3</cxf.version>
2.3 在web.xml文件中添加servlet
<servlet>
<servlet-name>cxf</servlet-name>
<servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>cxf</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>
2.4 spring-cxf.xml
spring目录下spring-cxf.xml文件中的内容这样填写,指明要发布的webservice
<jaxws:server id="mobileService" address="/mobile">
<jaxws:serviceBean>
<ref bean="mobileServiceImpl"/>
</jaxws:serviceBean>
</jaxws:server>
<bean id="mobileServiceImpl" class="com.wangzhixuan.webservice.impl.MobileServiceImpl"/>
结合前面web.xml指定的路径,则webservice的访问地址为http://localhost:8080/项目名/services/mobile?wsdl
这样还是不能访问,需要在拦截器中把webservice访问放行
2.5 不要让Shiro拦截Webservice
/services = anon <!-- webservice的链接不需要进行认证 -->
/services/** = anon <!-- webservice ws后面的所有链接都不进行认证 -->
3.添加JSON包
我的项目中还需要打包和解析JSON数据,maven中增加相关jar包。pom.xml中这样填写
<dependency>
<groupId>net.sf.json-lib</groupId>
<artifactId>json-lib</artifactId>
<version>2.4</version>
<classifier>jdk15</classifier>
</dependency>
注意:JDK版本要填写jdk15,虽然我的项目用的是JDK7。