Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使事务在restful项目中处于活动状态_Java_Spring - Fatal编程技术网

Java 如何使事务在restful项目中处于活动状态

Java 如何使事务在restful项目中处于活动状态,java,spring,Java,Spring,使用Spring、JPA、RESTfulWeb服务和JSon。错误就在这里 Exception Description: No transaction is currently active at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.throwCheckTransactionFailedException(EntityTransactionWrapper.java:87) [eclip

使用Spring、JPA、RESTfulWeb服务和JSon。错误就在这里

Exception Description: No transaction is currently active
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.throwCheckTransactionFailedException(EntityTransactionWrapper.java:87) [eclipselink-2.5.1.jar:2.5.1.v20130918-f2b9fc5]
at org.eclipse.persistence.internal.jpa.transaction.EntityTransactionWrapper.checkForTransaction(EntityTransactionWrapper.java:50) [eclipselink-2.5.1.jar:2.5.1.v20130918-f2b9fc5]
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.checkForTransaction(EntityManagerImpl.java:2041) [eclipselink-2.5.1.jar:2.5.1.v20130918-f2b9fc5]
at org.eclipse.persistence.internal.jpa.EntityManagerImpl.flush(EntityManagerImpl.java:863) [eclipselink-2.5.1.jar:2.5.1.v20130918-f2b9fc5]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_25]
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.6.0_25]
at org.springframework.orm.jpa.ExtendedEntityManagerCreator$ExtendedEntityManagerInvocationHandler.invoke(ExtendedEntityManagerCreator.java:365) [spring-orm.jar:3.1.1.RELEASE]
at $Proxy24.flush(Unknown Source)   at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [rt.jar:1.6.0_25]
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_25]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) [rt.jar:1.6.0_25]
at java.lang.reflect.Method.invoke(Unknown Source) [rt.jar:1.6.0_25]
at org.springframework.orm.jpa.SharedEntityManagerCreator$SharedEntityManagerInvocationHandler.invoke(SharedEntityManagerCreator.java:240) [spring-orm.jar:3.1.1.RELEASE]
at $Proxy24.flush(Unknown Source)   at com.hs.rest.springController.user.persistance.UserDAO.insertUser(UserDAO.java:62) [classes:]
at com.hs.rest.springController.user.service.UserService.addNewUser(UserService.java:65) [classes:]
at com.hs.rest.springController.StateController.getDefaultMovie(StateController.java:28) [classes:]
我的Restservice控制器类

@Controller
public class StateController {

private static final Logger logger = Logger.getLogger(StateController.class);

@Resource(name = "UserService")
private IUserService userService;

@RequestMapping(value = "/movie", method = RequestMethod.GET)
public @ResponseBody
User getDefaultMovie() {
    logger.debug("getDefaultMovie() Method is started !");
    System.out.println("getDefaultMovie() Method is started !");
    User user = new User();
    user.setName("TEST");
    userService.addNewUser(user);
    logger.debug("getDefaultMovie() Method is finished ! " + user.getName());
    System.out.println("getDefaultMovie() Method is finished ! " + user.getName());
    return user;

}
}

服务类

@Service("UserService")
public class UserService implements IUserService {
private Logger logger = Logger.getLogger(this.getClass());

@Resource(name = "UserDAO")
private IUserDAO userDAO;

@Transactional(propagation = Propagation.REQUIRED)
public void addNewUser(User user) {
    try {
        logger.debug("insertUser() method has been started.");
        user = userDAO.insertUser(user);
        logger.debug("insertUser() method has been finished.");
    } catch (DAOException e) {
        logger.error("insertUser() method has been failed.");
        throw new SystemException(e.getErrorCode(), "Faield to add new User.", e);
    }
}
}

配置设置在这里。 web.xml


宁静的
Jersey Web应用程序
com.sun.jersey.spi.container.servlet.ServletContainer
com.sun.jersey.config.property.packages
com.hs.rest
com.sun.jersey.api.json.POJOMappingFeature
真的
1.
Jersey Web应用程序
/休息/*
休息
org.springframework.web.servlet.DispatcherServlet
上下文配置位置
类路径:servlet-context.xml
1.
休息
/*
org.springframework.web.context.request.RequestContextListener
org.springframework.web.context.ContextLoaderListener
上下文配置位置
类路径:spring-beans.xml

我的问题是如何激活交易。
请帮帮我。对于我的英语和提问经历,我深表歉意。:)

确保您的服务上有@Transactional。

Post
UserService.java:65
<?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"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns"    
id="WebApp_ID" version="3.0">
<display-name>restful</display-name>
<servlet>
    <servlet-name>Jersey Web Application</servlet-name>
    <servlet-class>com.sun.jersey.spi.container.servlet.ServletContainer</servlet-class>
     <init-param>
        <param-name>com.sun.jersey.config.property.packages</param-name>
        <param-value>com.hs.rest</param-value>
    </init-param>
    <init-param>
        <param-name>com.sun.jersey.api.json.POJOMappingFeature</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>Jersey Web Application</servlet-name>
    <url-pattern>/rest/*</url-pattern>
</servlet-mapping>
<servlet>
    <servlet-name>rest</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:servlet-context.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>rest</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
<listener>
    <listener-class>org.springframework.web.context.request.RequestContextListener</listener-class>
</listener>
<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring-beans.xml</param-value>
</context-param>