Java 使用Spring WS休眠无响应

Java 使用Spring WS休眠无响应,java,spring,hibernate,Java,Spring,Hibernate,我有一个单一的上下文SpringWS应用程序(即,在我的项目中只有一个包含定义的文件),something-servlet.xml。通过DAO调用persist时,不会在数据库中创建任何条目。我也不会抛出任何异常 如果我遗漏了任何有助于确定问题的信息,请让我知道。谢谢 something-servlet.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org

我有一个单一的上下文SpringWS应用程序(即,在我的项目中只有一个包含定义的文件),something-servlet.xml。通过DAO调用persist时,不会在数据库中创建任何条目。我也不会抛出任何异常

如果我遗漏了任何有助于确定问题的信息,请让我知道。谢谢

something-servlet.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:sws="http://www.springframework.org/schema/web-services"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
  http://www.springframework.org/schema/web-services http://www.springframework.org/schema/web-services/web-services-2.0.xsd
  http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd">

    <context:component-scan base-package="com.abc.direct.mailserver" />
    <context:property-placeholder location="classpath:manager.properties" />

    <sws:annotation-driven />

    <sws:dynamic-wsdl id="manager" portTypeName="AbcDirect"
        locationUri="/mailerManagerService/" targetNamespace="http://ecsdfsds.com/direct/definitions">
        <sws:xsd location="/WEB-INF/mailManagerRequest.xsd" />
    </sws:dynamic-wsdl>

    <bean id="mailServerPersistenceManager"
        class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
        <property name="dataSource" ref="directMailDataSource" />
        <property name="packagesToScan" value="com.abc.direct.mailserver.dao"/>
        <property name="jpaVendorAdapter">
            <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter" />
        </property>
    </bean>

    <bean id="directMailDataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="${database.driverClassName}" />
        <property name="url" value="${database.url}" />
        <property name="username" value="${database.username}" />
        <property name="password" value="${database.password}" />
    </bean>
</beans>

终点:

@Endpoint
public class MailManagerEndpoint {

    private static final String NAMESPACE_URI = "http://asfsdfs.com/direct/schemas";
    static final Namespace NAMESPACE = Namespace.getNamespace(NAMESPACE_URI);

    private MailManagerService service;
    @Autowired
    private VirtualUsers virtualUsers;

    @Autowired
    public MailManagerEndpoint(MailManagerService mailManagerService) {

        this.service = mailManagerService;
    }

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "MailManagerRequest")
    public @ResponsePayload Element handleRequest(@RequestPayload Element element) throws JDOMException, IOException {

        VirtualUser user = new VirtualUser("newuser");
        virtualUsers.save(user);

        return new Element("success");
    }
}
启动日志:

事务日志:

在启动日志中,我很好奇为什么这个块会重复7次:

2014-04-25 10:34:03,634 DEBUG EntityLoader:146 - Static select for entity com.abc.direct.mailserver.dao.VirtualUser [READ]: select virtualuse0_.user as user1_0_0_ from virtualusertable virtualuse0_ where virtualuse0_.user=?
2014-04-25 10:34:03,635 DEBUG QuerySpacesImpl:177 - Adding QuerySpace : uid = <gen:0> -> org.hibernate.loader.plan.build.internal.spaces.EntityQuerySpaceImpl@e58a68d]
2014-04-25 10:34:03,635 DEBUG FetchStyleLoadPlanBuildingAssociationVisitationStrategy:94 - Building LoadPlan...
2014-04-25 10:34:03,635 DEBUG LoadQueryJoinAndFetchProcessor:111 - processing queryspace <gen:0>
2014-04-25 10:34:03,636 DEBUG LoadPlanTreePrinter:72 - LoadPlan(entity=com.abc.direct.mailserver.dao.VirtualUser)
    - Returns
       - EntityReturnImpl(entity=com.abc.direct.mailserver.dao.VirtualUser, querySpaceUid=<gen:0>, path=com.abc.direct.mailserver.dao.VirtualUser)
    - QuerySpaces
       - EntityQuerySpaceImpl(uid=<gen:0>, entity=com.abc.direct.mailserver.dao.VirtualUser)
          - SQL table alias mapping - virtualuse0_
          - alias suffix - 0_
          - suffixed key columns - {user1_0_0_}

如果要向DB插入数据,需要一个事务。为了让Spring提供事务,需要将
放入Spring上下文文件,并在向DB插入数据的方法上添加
@Transactional
注释。这样,Spring会在方法执行开始时为您启动一个事务,并提交it当方法执行结束时(或在抛出异常时将其回滚)。

这对您有用吗?如果没有,这可能是@Transaction或Transaction问题,请尝试包装您的服务方法(virtualUsers)使用transactional和check。不起作用:-\;不,这还没有起作用。它正在向您的something-servlet.xml添加
,并将
@transactional
放在dao类的
保存
方法上。仍然不起作用。使用调用persist时得到的输出进行更新,并使用您的建议appliedac,您的sol在我添加了一些东西后,我工作了。谢谢。
@Endpoint
public class MailManagerEndpoint {

    private static final String NAMESPACE_URI = "http://asfsdfs.com/direct/schemas";
    static final Namespace NAMESPACE = Namespace.getNamespace(NAMESPACE_URI);

    private MailManagerService service;
    @Autowired
    private VirtualUsers virtualUsers;

    @Autowired
    public MailManagerEndpoint(MailManagerService mailManagerService) {

        this.service = mailManagerService;
    }

    @PayloadRoot(namespace = NAMESPACE_URI, localPart = "MailManagerRequest")
    public @ResponsePayload Element handleRequest(@RequestPayload Element element) throws JDOMException, IOException {

        VirtualUser user = new VirtualUser("newuser");
        virtualUsers.save(user);

        return new Element("success");
    }
}
2014-04-25 10:34:03,634 DEBUG EntityLoader:146 - Static select for entity com.abc.direct.mailserver.dao.VirtualUser [READ]: select virtualuse0_.user as user1_0_0_ from virtualusertable virtualuse0_ where virtualuse0_.user=?
2014-04-25 10:34:03,635 DEBUG QuerySpacesImpl:177 - Adding QuerySpace : uid = <gen:0> -> org.hibernate.loader.plan.build.internal.spaces.EntityQuerySpaceImpl@e58a68d]
2014-04-25 10:34:03,635 DEBUG FetchStyleLoadPlanBuildingAssociationVisitationStrategy:94 - Building LoadPlan...
2014-04-25 10:34:03,635 DEBUG LoadQueryJoinAndFetchProcessor:111 - processing queryspace <gen:0>
2014-04-25 10:34:03,636 DEBUG LoadPlanTreePrinter:72 - LoadPlan(entity=com.abc.direct.mailserver.dao.VirtualUser)
    - Returns
       - EntityReturnImpl(entity=com.abc.direct.mailserver.dao.VirtualUser, querySpaceUid=<gen:0>, path=com.abc.direct.mailserver.dao.VirtualUser)
    - QuerySpaces
       - EntityQuerySpaceImpl(uid=<gen:0>, entity=com.abc.direct.mailserver.dao.VirtualUser)
          - SQL table alias mapping - virtualuse0_
          - alias suffix - 0_
          - suffixed key columns - {user1_0_0_}
2014-04-25 11:24:47,517 DEBUG SharedEntityManagerCreator$SharedEntityManagerInvocationHandler:253 - Creating new EntityManager for shared EntityManager invocation
2014-04-25 11:24:47,950 DEBUG AbstractSaveEventListener:130 - Generated identifier: newuser, using strategy: org.hibernate.id.Assigned
2014-04-25 11:24:48,011 DEBUG EntityManagerFactoryUtils:435 - Closing JPA EntityManager