Forum Discussion

k080513's avatar
k080513
New Contributor
16 years ago

SoapUIMockServiceRunner

Hello,

I have created a soupui project containing a mock service with a mock response. There is also a test suite which calls the mock service.

I have started mock service and sent a request to it and it all worked fine.

However I want to do this programmatically in a unit test to get this included in a maven 2 build. So I use a SoapUIMockServiceRunner object which is configured with the soapui project file. It works fine to start this from code, the log output is exactly the same as when using mockservicerunner.bat. Then I want to use SoapUITestCaseRunner (configured with the same project file) to send a request to the mock service. This works when I run the test inside soapUI but causing an error when running the code.

This is what is printed in soapui.log when this error occurs:

[tt:2nj0im5j]2008-05-13 22:54:22,442 INFO  [WsdlProject] Loaded project from [file:/C:/temp/test-soapui-project.xml]
2008-05-13 22:54:22,442 INFO  [SoapUITestCaseRunner] Running soapUI tests in project [testMock]
2008-05-13 22:54:22,458 INFO  [SoapUITestCaseRunner] Running soapUI suite [TestSuite 1], runType = SEQUENTIAL
2008-05-13 22:54:22,458 INFO  [SoapUITestCaseRunner] Running soapUI testcase [TestCase 1]
2008-05-13 22:54:22,458 INFO  [SoapUITestCaseRunner] running step [Test Request]
2008-05-13 22:54:23,364 INFO  [HttpClientSupport$Helper] Initializing SSL
2008-05-13 22:54:23,552 WARN  [jetty] EXCEPTION
java.lang.NoSuchMethodError: javax.wsdl.Definition.getAllServices()Ljava/util/Map;
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlUtils.findBindingForOperation(WsdlUtils.java:142)
at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlUtils.isRpc(WsdlUtils.java:282)[/tt:2nj0im5j]
From the test-report:
[tt:2nj0im5j]Response Headers: {Connection=close, #status#=HTTP/1.1 500 Internal Server Error, Server=Jetty(6.1.5)}

at com.eviware.soapui.tools.SoapUITestCaseRunner.throwFailureException(SoapUITestCaseRunner.java:377)
at com.eviware.soapui.tools.SoapUITestCaseRunner.runRunner(SoapUITestCaseRunner.java:345)
at com.eviware.soapui.tools.AbstractSoapUIRunner.run(AbstractSoapUIRunner.java:114)[/tt:2nj0im5j]
If anybody has any idea about what might be wrong or any code examples that would be interesteing.

best regards.

6 Replies

  • omatzura's avatar
    omatzura
    Super Contributor
    Hi!

    it looks like you have an older version of the wsdl4j jar file first in your classpath (before the soapUI one..)

    regards!

    /Ole
    eviware.com
  • k080513's avatar
    k080513
    New Contributor
    Thanks for your reply.

    In my project I use the maven soupui plugin:

       
              eviware
              maven-soapui-plugin         
              2.0.2
              test
         
         

    wsdl4j is a transitive dependency.

    The wsdl4j is version 1.6.2-fixed. That is the same as in mockservicerunner.bat.

    Thanks.
  • omatzura's avatar
    omatzura
    Super Contributor
    Hi!

    ok.. could there be some other plugin that has an older/other wsdl4j dependency?

    regards,

    /Ole
    eviware.com
  • Hi,

    I have a very similar problem. Oddly enough, when I start the same project in a window in soapUi, and run my unit tests against it, everything works. But when I try to do it from within junit, it fails miserably. We have multiple soapUI projects linked to our project, but only this one particular, which at first glance isn't in any way different from the others, yields this problem. Here's a full stack trace:

    16:33:20,388 DEBUG [JettyMockEngine] InboxServiceSOAPBinding MockService was unable to dispatch mock request
    com.eviware.soapui.impl.wsdl.mock.DispatchException: java.lang.NoSuchMethodError: javax/wsdl/Definition.getAllServices()Ljava/util/Map;
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:397)
    at com.eviware.soapui.monitor.JettyMockEngine$ServerHandler.handle(JettyMockEngine.java:701)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
    at java.lang.Thread.run(Thread.java:810)
    Caused by: java.lang.NoSuchMethodError: javax/wsdl/Definition.getAllServices()Ljava/util/Map;
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlUtils.findBindingForOperation(WsdlUtils.java:216)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlUtils.isRpc(WsdlUtils.java:365)
    at com.eviware.soapui.impl.wsdl.WsdlOperation.getRequestBodyElementQName(WsdlOperation.java:579)
    at com.eviware.soapui.impl.wsdl.support.soap.SoapUtils.findOperationForRequest(SoapUtils.java:234)
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchPostRequest(WsdlMockRunner.java:261)
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:384)
    ... 13 more
    16:33:20,404 DEBUG [JettyMockEngine] InboxServiceSOAPBinding MockService was unable to dispatch mock request
    com.eviware.soapui.impl.wsdl.mock.DispatchException: Missing operation for soapAction [SendMessage] and body element [null] with SOAP Version [SOAP 1.1]
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchPostRequest(WsdlMockRunner.java:327)
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:384)
    at com.eviware.soapui.monitor.JettyMockEngine$ServerHandler.handle(JettyMockEngine.java:701)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
    at java.lang.Thread.run(Thread.java:810)
    16:33:20,404 DEBUG [JettyMockEngine] InboxServiceSOAPBinding MockService was unable to dispatch mock request
    com.eviware.soapui.impl.wsdl.mock.DispatchException: Missing operation for soapAction [SendMessage] and body element [null] with SOAP Version [SOAP 1.1]
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchPostRequest(WsdlMockRunner.java:327)
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:384)
    at com.eviware.soapui.monitor.JettyMockEngine$ServerHandler.handle(JettyMockEngine.java:701)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
    at java.lang.Thread.run(Thread.java:810)
    16:33:20,404 ERROR [SoapUI] An error occured [Missing operation for soapAction [SendMessage] and body element [null] with SOAP Version [SOAP 1.1]], see error log for details
    com.eviware.soapui.impl.wsdl.mock.DispatchException: Missing operation for soapAction [SendMessage] and body element [null] with SOAP Version [SOAP 1.1]
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchPostRequest(WsdlMockRunner.java:327)
    at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:384)
    at com.eviware.soapui.monitor.JettyMockEngine$ServerHandler.handle(JettyMockEngine.java:701)
    at org.mortbay.jetty.handler.HandlerCollection.handle(HandlerCollection.java:114)
    at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139)
    at org.mortbay.jetty.Server.handle(Server.java:313)
    at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:506)
    at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:844)
    at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:644)
    at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211)
    at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:381)
    at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:396)
    at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)
    at java.lang.Thread.run(Thread.java:810)
    25 mars 2011 16:33:20 org.springframework.test.jdbc.SimpleJdbcTestUtils executeSqlScript
    INFO: Executing SQL script from class path resource [sql/InboxServiceDAOTest-tearDown.sql]
    25 mars 2011 16:33:20 org.springframework.test.jdbc.SimpleJdbcTestUtils executeSqlScript
    INFO: Done executing SQL scriptBuilder from class path resource [sql/InboxServiceDAOTest-tearDown.sql] in 0 ms.
    25 mars 2011 16:33:20 org.springframework.test.context.transaction.TransactionalTestExecutionListener endTransaction
    INFO: Committed transaction after test execution for test context [[TestContext@6c006c0 testClass = InboxServiceDAOTest, locations = array<String>['classpath:/config/application-context-spring-test.xml', 'classpath:/config/application-data-test.xml', 'classpath:/config/application-wscontext-service-test.xml'], testInstance = com.company.InboxServiceDAOTest@554e554e, testMethod = testPrepareGenericMessage@InboxServiceDAOTest, testException = com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
    at [row,col {unknown-source}]: [1,0]]]


    and the accompanying trace from the JUnit window in eclipse, where the test is run when soapUI is closed:

    com.sun.xml.ws.protocol.soap.MessageCreationException: Couldn't create SOAP message due to exception: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
    at [row,col {unknown-source}]: [1,0]
    at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:365)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:187)
    at com.afklm.soa.jaxws.monitoring.tube.LogTimeoutTransportTubeFactory$1.process(LogTimeoutTransportTubeFactory.java:77)
    at com.sun.xml.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:94)
    at com.sun.xml.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:116)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
    at com.sun.xml.ws.api.pipe.helper.AbstractTubeImpl.process(AbstractTubeImpl.java:112)
    at com.sun.xml.xwss.XWSSClientPipe.process(XWSSClientPipe.java:160)
    at com.sun.xml.ws.api.pipe.helper.PipeAdapter.processRequest(PipeAdapter.java:115)
    at com.sun.xml.ws.api.pipe.Fiber.__doRun(Fiber.java:598)
    at com.sun.xml.ws.api.pipe.Fiber._doRun(Fiber.java:557)
    at com.sun.xml.ws.api.pipe.Fiber.doRun(Fiber.java:542)
    at com.sun.xml.ws.api.pipe.Fiber.runSync(Fiber.java:439)
    at com.sun.xml.ws.client.Stub.process(Stub.java:222)
    at com.sun.xml.ws.client.sei.SEIStub.doProcess(SEIStub.java:135)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:109)
    at com.sun.xml.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:89)
    at com.sun.xml.ws.client.sei.SEIStub.invoke(SEIStub.java:118)
    at $Proxy63.sendMessage(Unknown Source)
    at com.company.InboxServiceDAO.sendMessage(InboxServiceDAO.java:178)
    at com.company.InboxServiceDAOTest.testPrepareGenericMessage(InboxServiceDAOTest.java:197)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:79)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:618)
    at org.springframework.test.context.junit4.SpringTestMethod.invoke(SpringTestMethod.java:160)
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTestMethod(SpringMethodRoadie.java:233)
    at org.springframework.test.context.junit4.SpringMethodRoadie$RunBeforesThenTestThenAfters.run(SpringMethodRoadie.java:333)
    at org.springframework.test.context.junit4.SpringMethodRoadie.runWithRepetitions(SpringMethodRoadie.java:217)
    at org.springframework.test.context.junit4.SpringMethodRoadie.runTest(SpringMethodRoadie.java:197)
    at org.springframework.test.context.junit4.SpringMethodRoadie.run(SpringMethodRoadie.java:143)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.invokeTestMethod(SpringJUnit4ClassRunner.java:160)
    at org.junit.internal.runners.JUnit4ClassRunner.runMethods(JUnit4ClassRunner.java:51)
    at org.junit.internal.runners.JUnit4ClassRunner$1.run(JUnit4ClassRunner.java:44)
    at org.junit.internal.runners.ClassRoadie.runUnprotected(ClassRoadie.java:27)
    at org.junit.internal.runners.ClassRoadie.runProtected(ClassRoadie.java:37)
    at org.junit.internal.runners.JUnit4ClassRunner.run(JUnit4ClassRunner.java:42)
    at org.springframework.test.context.junit4.SpringJUnit4ClassRunner.run(SpringJUnit4ClassRunner.java:97)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:38)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)
    Caused by: com.sun.xml.ws.streaming.XMLStreamReaderException: XML reader error: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
    at [row,col {unknown-source}]: [1,0]
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.wrapException(XMLStreamReaderUtil.java:267)
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:95)
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.nextContent(XMLStreamReaderUtil.java:110)
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.nextElementContent(XMLStreamReaderUtil.java:100)
    at com.sun.xml.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:175)
    at com.sun.xml.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:303)
    at com.sun.xml.ws.encoding.StreamSOAPCodec.decode(StreamSOAPCodec.java:129)
    at com.sun.xml.ws.encoding.SOAPBindingCodec.decode(SOAPBindingCodec.java:360)
    ... 46 more
    Caused by: com.ctc.wstx.exc.WstxEOFException: Unexpected EOF in prolog
    at [row,col {unknown-source}]: [1,0]
    at com.ctc.wstx.sr.StreamScanner.throwUnexpectedEOF(StreamScanner.java:661)
    at com.ctc.wstx.sr.BasicStreamReader.handleEOF(BasicStreamReader.java:2134)
    at com.ctc.wstx.sr.BasicStreamReader.nextFromProlog(BasicStreamReader.java:2040)
    at com.ctc.wstx.sr.BasicStreamReader.next(BasicStreamReader.java:1069)
    at com.sun.xml.ws.util.xml.XMLStreamReaderFilter.next(XMLStreamReaderFilter.java:92)
    at com.sun.xml.ws.streaming.XMLStreamReaderUtil.next(XMLStreamReaderUtil.java:76)
    ... 52 more


    Any good ideas are more than welcome & appreciated.
    Cheers,
    Chris
  • I ran into a similar problem:
    java.lang.NoSuchMethodError: javax.wsdl.Definition.getAllServices()Ljava/util/Map;

    Found that axis 1.4 was pulling in axis-wsdl4j which was just a repackage of an older version of wsdl4j. Moved that down below the soapui dependency and it works now.
  • tcurrie wrote:
    I ran into a similar problem:
    java.lang.NoSuchMethodError: javax.wsdl.Definition.getAllServices()Ljava/util/Map;

    Found that axis 1.4 was pulling in axis-wsdl4j which was just a repackage of an older version of wsdl4j. Moved that down below the soapui dependency and it works now.

    Hmmm, i have ran into te same problem, but i don't how to deal with it.