记一次简单的整合 异常整理.(CXF2.7.4整合Hibernate4.2.3 spring3.2.2 log4j1.2.17)

结构如下:



 

只列一个web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <display-name>onlinestore</display-name>
<!--spring 配置文件 -->
  <context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>
        classpath*:*.xml
    </param-value>
  </context-param>
  
<!--log4j启动的监听器 -->
<listener>   
  <listener-class>org.springframework.web.util.Log4jConfigListener</listener-class>
 </listener> 
 
 <!--如果不设,默认为web.root,但最好设置,以免项目间冲突 -->
 <context-param>     
  <param-name>webAppRootKey</param-name>      
  <param-value>onlinestore.root</param-value> 
 </context-param>
 <context-param>   
  <param-name>log4jConfigLocation</param-name>   
  <param-value>/WEB-INF/classes/log4j.properties</param-value>
 </context-param> 
 
 <!--spring的启动监听器-->
  <listener>
    <listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
  </listener>
  
  <servlet>
    <servlet-name>CXFServlet</servlet-name>
    <servlet-class>
			org.apache.cxf.transport.servlet.CXFServlet
		</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>CXFServlet</servlet-name>
    <url-pattern>/ws/*</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

全部的配置文件就不列了 这边记录一下问题

1.

org.springframework.beans.factory.BeanNotOfRequiredTypeException

用@Resource进行注入 名字没有问题 其他的类里都没问题 只发生在了service层的类里 如下:

	@Resource
	private MemberServiceImpl memberServiceImpl;

后来发现是AOP进行声明式事务管理 里面的proxy-target-class没有设置(默认为false 表示使用JDK的代理(基于接口)) 因为我以上的注入是基于实现类注入的 所以会报这个错误

改正方法:1.改为MemberService memberServiceImpl;(如果改成memberService在Resource上要写明name)

                2.设置proxy-target-class为true(CGLIB实现 基于继承) 

这个问题更多可见:

http://ekisstherain.iteye.com/blog/1569236

2.

org.springframework.beans.MethodInvocationException: Property 'systemPropertiesModeName' threw exception; nested exception is org.springframework.core.ConstantException: Field 'SYSTEM_PROPERTIES_MODE_ENVIRONMENT' not found in class [org.springframework.beans.factory.config.PropertyPlaceholderConfigurer]

额 这个错误就是关于资源文件的 这个..源于我把log4j.properties放在了classpath下 然后又使用了:

<context:property-placeholder location="classpath*:*.properties"/>

 没有debug进去查看 估计就是解析错误了什么的  换成以下的就好了(老方式):

    <bean id="springConfig"
		class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"
		lazy-init="false">
		<property name="locations">
			<list>
				<value>classpath:db.properties</value>
				<value>classpath:hiber.properties</value>
			</list>
		</property>
		<property name="ignoreUnresolvablePlaceholders" value="true"></property>
	</bean>

3.

log4j:ERROR setFile(null,true) call failed.

java.io.FileNotFoundException: \WEB-INF\log4j.log

这个是鄙人看到web.xml里写的是这个:

 <context-param>   
  <param-name>log4jConfigLocation</param-name>   
  <param-value>/WEB-INF/classes/log4j.properties</param-value>
 </context-param> 

 然后在web-inf建了个classes文件夹 又放了进去的关系.....

不动就可以了... ...会被编译进去的(主要用eclipse 不会在项目里生成classes文件夹(会在临时空间里)就弄错了)

具体看这里:

http://nopainnogain.iteye.com/blog/780542

猜你喜欢

转载自fair-jm.iteye.com/blog/1910851