小编act*_*ctc的帖子

带有手动事务管理的Spring集成测试

我已经阅读了许多有关使用Spring进行集成测试的帖子和主题,但是没有什么令人满意或有用的。

我们将Spring 3.2.3与Hibernate,Spring Data和Oracle数据库一起使用。对于测试,我们还使用DbUnit和Spring-test-dbunit。在生产代码中,事务由控制器启动,服务本身对事务一无所知。

所以,这是我的测试:

@ContextConfiguration // ...
@ActiveProfiles // ...
@RunWith(SpringJUnit4ClassRunner.class)
@TestExecutionListeners({
    DependencyInjectionTestExecutionListener.class,
    DirtiesContextTestExecutionListener.class,
    TransactionalTestExecutionListener.class,
    ModifiedDbUnitTestExecutionListener.class })
@DbUnitConfiguration(databaseConnection = "oracleConnection")
@DatabaseSetup("/database/snapshot/snapshot.xml")
public class IntegrationTest extends AbstractTransactionalJUnit4SpringContextTests
{
    @Test
    public void sampleTest()
    {
        // transaction is already started

        this.assertThatNewsContains(0);

        News news1 = new News();
        news1.setTitle("Test News 1");
        News savedNews1 = this.newsService.save(news1);
        Assert.assertTrue(savedNews1.getId() > 0);

        News news2 = new News();
        news2.setTitle("Test News 2");
        News savedNews2 = this.newsService.save(news2);
        Assert.assertTrue(savedNews2.getId() > 0);

        News news3 = new News();
        news3.setTitle("Test News 3");
        News savedNews3 = …
Run Code Online (Sandbox Code Playgroud)

spring transactions spring-test-dbunit

6
推荐指数
1
解决办法
1519
查看次数

Spring CXF Webservice无法正确部署

情况就是这样:我们有一个Spring-MVC应用程序,现在应该提供契约优先的SOAP Web服务.在查看了一个CXF示例(wsdl_first)之后,我终于成功了:

我生成了骨架类,并且还实现了服务接口.

Tomcat 7似乎部署了一些东西:

12 Jan 2014 19:32:08,386  INFO org.apache.cxf.service.factory.ReflectionServiceFactoryBean:411 - Creating Service {urn:webservice.x.com:wsdl}IdmAdapterService from WSDL: classpath:IdmAdapterService.wsdl
Run Code Online (Sandbox Code Playgroud)

我创建了第二个应该处理webservice调用的servlet.WEB-INF/web.xml包含:

<servlet>
    <servlet-name>webservices</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>

<servlet-mapping>
    <servlet-name>webservices</servlet-name>
    <url-pattern>/services/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

WEB-INF/cxf-servlet.xml包含:

<jaxws:endpoint xmlns:tns="urn:webservice.x.com:wsdl"
    id="idmAdapterImpl" address="/services/IdmAdapterService"
    serviceName="tns:IdmAdapterService" endpointName="tns:IdmAdapterSoapPort"
    implementor="de.y.idm.IdmAdapterImpl"
    />
Run Code Online (Sandbox Code Playgroud)

src/main/resources/cxf.xml包含:

<jaxws:endpoint name="{urn:webservice.x.com:wsdl}:IdmAdapterSoapPort"
    wsdlLocation="IdmAdapterService.wsdl">
    <jaxws:properties>
        <entry key="schema-validation-enabled" value="true" />
    </jaxws:properties>
</jaxws:endpoint>
Run Code Online (Sandbox Code Playgroud)

src/main/resources/server-applicationContext.xml包含:

<!-- HTTP Endpoint -->
<jaxws:endpoint xmlns:tns="urn:webservice.x.com:wsdl"
    id="idmAdapterImpl"
            address="/services/IdmAdapterService"
    serviceName="tns:IdmAdapterService"
            endpointName="tns:IdmAdapterSoapPort"
    implementor="de.y.idm.IdmAdapterImpl">
    <jaxws:features>
        <bean class="org.apache.cxf.feature.LoggingFeature" />
    </jaxws:features>
</jaxws:endpoint>
Run Code Online (Sandbox Code Playgroud)

当我调用URL时

 http://localhost:8080/application/services/IdmAdaptorService?wsdl
Run Code Online (Sandbox Code Playgroud)

我总是最终得到

 No service was found.
Run Code Online (Sandbox Code Playgroud)

并在控制台上

12 Jan 2014 19:51:53,731 DEBUG org.springframework.orm.jpa.support.OpenEntityManagerInViewFilter:136 …
Run Code Online (Sandbox Code Playgroud)

java spring wsdl web-services cxf

2
推荐指数
1
解决办法
1万
查看次数