当前位置:编程学习 > JAVA >>

spring 事务配置报错的问题,急。。。

applicationContext.xml 部分配置如下:
    <context:annotation-config/>
    <context:component-scan base-package="com.sunrise.cmccscbh.action,com.sunrise.cmccscbh.dao,com.sunrise.cmccscbh.service,com.sunrise.cmccscbh.domain"/>
    <aop:aspectj-autoproxy />

    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
     <property name="dataSource" ref="dataSource"></property>
     <property name="hibernateProperties">
     <props>
     <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop><!-- Hibernate方言 -->
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.hbm2ddl.auto">update</prop><!-- 创建/更新数据库表自动当JVM启动 -->
     </props>
     </property>
     <property name="annotatedClasses">
<list>
<value>com.sunrise.cmccscbh.domain.SysmUsers</value>
<value>com.sunrise.cmccscbh.domain.SuperDetails</value>
<value>com.sunrise.cmccscbh.domain.AgentDetails</value>
<value>com.sunrise.cmccscbh.domain.AgactBzjmx</value>
<value>com.sunrise.cmccscbh.domain.AgentAccount</value>
<value>com.sunrise.cmccscbh.domain.AgentCzmx</value>
<value>com.sunrise.cmccscbh.domain.SysmDataType</value>
<value>com.sunrise.cmccscbh.domain.SysmNotice</value>
</list>
</property>
    </bean>
    
    <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate" >
<property name="sessionFactory" ref="sessionFactory" />
</bean>
    
    <!-- 该 BeanPostProcessor 将自动对标注 @Autowired 的 Bean 进行注入 -->      
<bean class="org.springframework.beans.factory.annotation.AutowiredAnnotationBeanPostProcessor"/> 

<!-- 配置事务管理器(声明式事务)-->
<bean id="transaction"
class="org.springframework.orm.hibernate3.HibernateTransactionManager">
<property name="sessionFactory" ref="sessionFactory"></property>
</bean>
<!-- 配置代理(事务的传播特性) -->
<tx:advice id="advice" transaction-manager="transaction">
<tx:attributes>
<!-- 所有以'find' 'get'开头的方法是read-only的 -->
<tx:method name="find*" propagation="REQUIRED" read-only="true" />
<tx:method name="get*" propagation="REQUIRED" read-only="true" />
<!-- 其他方法使用默认的事务设置 -->
<tx:method name="*" read-only="false" /> 
</tx:attributes>
</tx:advice>
<!-- 配置AOP(事务边界)-->
<aop:config>
<aop:pointcut id="service"
expression="execution(* com.sunrise.cmccscbh.action.*.*(..))" />
<aop:advisor pointcut-ref="service" advice-ref="advice" />
</aop:config>

web.xml 部分配置如下:
        <context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath*:/applicationContext*.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<filter>
<filter-name>struts2Filter</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
<init-param>
   <param-name>actionPackages</param-name>
   <param-value>com.sunrise.cmccscbh.action</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>struts2Filter</filter-name>
<url-pattern>*.action</url-pattern>
</filter-mapping>

Action类代码:
@SuppressWarnings("serial")
@Result(name = ActionSupport.SUCCESS, type = "json")
@Namespace("/SysmDataTypeAction")
@Controller
public class SysmDataTypeAction extends BaseAction{

@Autowired
private SysmDataTypeService sysmDataTypeService;

/**
 * 获取系统字典类型数据
 * @return
 */
@Action(value="findDataToType")
@ToJson(outField="dataPackage")
public String findDataToType(){}


系统启动是报错:
2013-08-30 15:39:10 [main] [org.apache.struts2.convention.spring.SpringActionConfigBuilder]-[INFO] - In the applicationContext has found 7 actions [{agentAccountAction=com.sunrise.cmccscbh.action.AgentAccountAction@a53564, loginAction=com.sunrise.cmccscbh.action.LoginAction@54782a, moreCreditAction=com.sunrise.cmccscbh.action.MoreCreditAction@19d2f6b, sysmCommonAction=com.sunrise.cmccscbh.action.SysmCommonAction@943653, sysmDataTypeAction=com.sunrise.cmccscbh.action.SysmDataTypeAction@7a9c0f, sysmNoticesAction=com.sunrise.cmccscbh.action.SysmNoticesAction@19bc716, sysmUsersAction=com.sunrise.cmccscbh.action.SysmUsersAction@2bae98}] 
2013-08-30 15:39:10 [main] [org.apache.struts2.dispatcher.Dispatcher]-[ERROR] - Dispatcher initialization failed
java.lang.NullPointerException
at org.apache.struts2.convention.spring.SpringActionConfigBuilder.buildConfigurationBySpring(SpringActionConfigBuilder.java:438)
at org.apache.struts2.convention.spring.SpringActionConfigBuilder.buildActionConfigs(SpringActionConfigBuilder.java:362)
at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:260)
at com.opensymphony.xwork2.config.ConfigurationManager.getConfiguration(ConfigurationManager.java:67)
at org.apache.struts2.dispatcher.Dispatcher.init_PreloadConfiguration(Dispatcher.java:446)
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:490)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3696)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:525)
at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:920)
at org.apache.catalina.startup.HostConfig.deployDirectories(HostConfig.java:883)
at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:492)
at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1138)
at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:288)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:413)
2013-8-30 15:39:10 org.apache.catalina.core.StandardContext filterStart
严重: Exception starting filter struts2Filter
Class: org.apache.struts2.convention.spring.SpringActionConfigBuilder
File: SpringActionConfigBuilder.java
Method: buildConfigurationBySpring
Line: 438 - org/apache/struts2/convention/spring/SpringActionConfigBuilder.java:438:-1
at org.apache.struts2.dispatcher.Dispatcher.init(Dispatcher.java:502)
at org.apache.struts2.dispatcher.ng.InitOperations.initDispatcher(InitOperations.java:74)
at org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter.init(StrutsPrepareAndExecuteFilter.java:57)
at org.apache.catalina.core.ApplicationFilterConfig.getFilter(ApplicationFilterConfig.java:275)
at org.apache.catalina.core.ApplicationFilterConfig.setFilterDef(ApplicationFilterConfig.java:397)
at org.apache.catalina.core.ApplicationFilterConfig.<init>(ApplicationFilterConfig.java:108)
at org.apache.catalina.core.StandardContext.filterStart(StandardContext.java:3696)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4343)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:719)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
at org.apache.catalina.core.StandardService.start(StandardService.java:516)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
at org.apache.catalina.startup.Catalina.start(Catalina.java:566)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
Caused by: java.lang.NullPointerException
at org.apache.struts2.convention.spring.SpringActionConfigBuilder.buildConfigurationBySpring(SpringActionConfigBuilder.java:438)
at org.apache.struts2.convention.spring.SpringActionConfigBuilder.buildActionConfigs(SpringActionConfigBuilder.java:362)
at org.apache.struts2.convention.ClasspathPackageProvider.loadPackages(ClasspathPackageProvider.java:53)
at com.opensymphony.xwork2.config.impl.DefaultConfiguration.reloadContainer(DefaultConfiguration.java:260)
... 29 more

action、service 都是采用注解的方式配置。
我把事务配置改成* com.sunrise.cmccscbh.service.*.*(..)) 或 把web.xml中struts2Filter的配置全删掉是不会报错的,求解啊。。 spring 事务 struts --------------------编程问答-------------------- ,你的service呢 --------------------编程问答--------------------
引用 1 楼 podongxi777442156445 的回复:
,你的service呢


@Service
public interface AgentAccountService {
/**
 * 查询满足条件的账户信息,带分页
 */
public DataPackage findPageAgentAccount(AccountDto dto,DataPackage dp);

@Service("com.sunrise.cmccscbh.service.AgentAccountService")
@Transactional(propagation = Propagation.REQUIRED, isolation = Isolation.DEFAULT)
public class AgentAccountServiceImpl implements AgentAccountService{

@Autowired
private CommonDAO<AgentAccount> AgentAccountDao;
--------------------编程问答-------------------- 难道是过滤了 --------------------编程问答-------------------- 顶一下,请高手指教啊。。。 --------------------编程问答-------------------- @Service
public interface AgentAccountService {

接口这个地方应该是不用配的。 --------------------编程问答-------------------- 贴下Action,是不是Action的类没有加@Control注解
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,