我想为开发环境模拟Web服务。 我有 SOAPUI版本5.2.1 和以下 WSDL :
<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
xmlns:http="http://schemas.xmlsoap.org/wsdl/http/"
xmlns:mime="http://schemas.xmlsoap.org/wsdl/mime/"
xmlns:s="http://www.w3.org/2001/XMLSchema"
xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
xmlns:soap12="http://schemas.xmlsoap.org/wsdl/soap12/"
xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
xmlns:tm="http://microsoft.com/wsdl/mime/textMatching/"
xmlns:tns="http://server.com/SSO"
targetNamespace="http://server.com/SSO">
<wsdl:documentation>Web service</wsdl:documentation>
<wsdl:types>
<s:schema elementFormDefault="qualified" targetNamespace="http://server.com/SSO">
<s:element name="GetProfile2">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="0" name="Token" nillable="true" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="SiteName" nillable="true" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="TimeStamp" nillable="true" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="EncodedPwd" nillable="true" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="EncodedType" nillable="true" type="s:string"/>
<s:element maxOccurs="1" minOccurs="0" name="Filter" nillable="true" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetProfile2Response">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="0" name="GetProfile2Result" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="GetCache">
<s:complexType/>
</s:element>
<s:element name="GetCacheResponse">
<s:complexType>
<s:sequence>
<s:element maxOccurs="1" minOccurs="0" name="GetCacheResult" type="s:string"/>
</s:sequence>
</s:complexType>
</s:element>
<s:element name="string" nillable="true" type="s:string"/>
</s:schema>
</wsdl:types>
<wsdl:message name="GetProfile2SoapOut">
<wsdl:part element="tns:GetProfile2Response" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:message name="GetProfile2SoapIn">
<wsdl:part element="tns:GetProfile2" name="parameters">
</wsdl:part>
</wsdl:message>
<wsdl:portType name="ServiceSoap">
<wsdl:operation name="GetProfile2">
<wsdl:documentation>Returns a user</wsdl:documentation>
<wsdl:input message="tns:GetProfile2SoapIn">
</wsdl:input>
<wsdl:output message="tns:GetProfile2SoapOut">
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetCache">
<wsdl:documentation>Returns the cached abilitations.</wsdl:documentation>
<wsdl:input message="tns:GetCacheSoapIn">
</wsdl:input>
<wsdl:output message="tns:GetCacheSoapOut">
</wsdl:output>
</wsdl:operation>
</wsdl:portType>
<wsdl:binding name="ServiceSoap" type="tns:ServiceSoap">
<soap:binding transport="http://schemas.xmlsoap.org/soap/http"/>
<wsdl:operation name="GetProfile2">
<soap:operation soapAction="http://server.com/SSO/GetProfile2" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
<wsdl:operation name="GetCache">
<soap:operation soapAction="http://server.com/SSO/GetCache" style="document"/>
<wsdl:input>
<soap:body use="literal"/>
</wsdl:input>
<wsdl:output>
<soap:body use="literal"/>
</wsdl:output>
</wsdl:operation>
</wsdl:binding>
<wsdl:service name="Service">
<wsdl:documentation>Web service</wsdl:documentation>
<wsdl:port binding="tns:ServiceSoap" name="ServiceSoap">
<soap:address location="http://server.com:7001/services/Service.ServiceSoap/"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
我在 SOAPUI 中创建了一个新的soap项目,使用模拟服务,我已经设置了 Weblogic服务器12c的主机和端口我必须在哪里安装战争。
在 SOAPUI 首选项中,我取消选中了所有的日志内容......“,在MockService属性中我将”需要SAOP操作“设置为false,并且我将WAR作为项目导出安装到 Weblogic 12c 。
好的,问题是,第一次调用webservice是可以的,我得到了预期的响应。
在第二次通话中,我收到以下错误:
com.eviware.soapui.impl.wsdl.mock.DispatchException: Missing operation for soapAction [http://server.com/SSO/GetProfile2] and body element [{http://server.com/SSO}GetProfile2] with SOAP Version [SOAP 1.1]
at com.eviware.soapui.impl.wsdl.support.soap.SoapUtils.findOperationForRequest(SoapUtils.java:330)
at com.eviware.soapui.impl.wsdl.mock.WsdlMockDispatcher.dispatchPostRequest(WsdlMockDispatcher.java:191)
at com.eviware.soapui.impl.wsdl.mock.WsdlMockDispatcher.dispatchRequest(WsdlMockDispatcher.java:113)
at com.eviware.soapui.impl.wsdl.mock.WsdlMockRunner.dispatchRequest(WsdlMockRunner.java:142)
at com.eviware.soapui.mockaswar.MockAsWarServlet$MockServletSoapUICore.dispatchRequest(MockAsWarServlet.java:247)
at com.eviware.soapui.mockaswar.MockAsWarServlet.service(MockAsWarServlet.java:182)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:286)
at weblogic.servlet.internal.StubSecurityHelper$ServletServiceAction.run(StubSecurityHelper.java:260)
at weblogic.servlet.internal.StubSecurityHelper.invokeServlet(StubSecurityHelper.java:137)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:350)
at weblogic.servlet.internal.ServletStubImpl.execute(ServletStubImpl.java:247)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.wrapRun(WebAppServletContext.java:3650)
at weblogic.servlet.internal.WebAppServletContext$ServletInvocationAction.run(WebAppServletContext.java:3620)
at weblogic.security.acl.internal.AuthenticatedSubject.doAs(AuthenticatedSubject.java:326)
at weblogic.security.service.SecurityManager.runAsForUserCode(SecurityManager.java:196)
at weblogic.servlet.provider.WlsSecurityProvider.runAsForUserCode(WlsSecurityProvider.java:203)
at weblogic.servlet.provider.WlsSubjectHandle.run(WlsSubjectHandle.java:71)
at weblogic.servlet.internal.WebAppServletContext.doSecuredExecute(WebAppServletContext.java:2423)
at weblogic.servlet.internal.WebAppServletContext.securedExecute(WebAppServletContext.java:2280)
at weblogic.servlet.internal.WebAppServletContext.execute(WebAppServletContext.java:2258)
at weblogic.servlet.internal.ServletRequestImpl.runInternal(ServletRequestImpl.java:1626)
at weblogic.servlet.internal.ServletRequestImpl.run(ServletRequestImpl.java:1586)
at weblogic.servlet.provider.ContainerSupportProviderImpl$WlsRequestExecutor.run(ContainerSupportProviderImpl.java:270)
at weblogic.invocation.ComponentInvocationContextManager._runAs(ComponentInvocationContextManager.java:348)
at weblogic.invocation.ComponentInvocationContextManager.runAs(ComponentInvocationContextManager.java:333)
at weblogic.work.LivePartitionUtility.doRunWorkUnderContext(LivePartitionUtility.java:54)
at weblogic.work.PartitionUtility.runWorkUnderContext(PartitionUtility.java:41)
at weblogic.work.SelfTuningWorkManagerImpl.runWorkUnderContext(SelfTuningWorkManagerImpl.java:617)
at weblogic.work.ExecuteThread.execute(ExecuteThread.java:397)
at weblogic.work.ExecuteThread.run(ExecuteThread.java:346)
如果我从wsdl中删除消息标记,一切正常。请帮帮我!!!
答案 0 :(得分:0)
我指的是weblogic 12.c
注意:从soapui导出项目作为战争,我已经注意上下文和 战争名称相同
答案 1 :(得分:0)
我在soapUI上遇到了同样的错误,第一次出现响应,然后对于后续请求,它变得空白。好像是图书馆问题。使用https://github.com/eveoh/weblogic-soapui-mock-ear将战争打入耳边。这为我解决了问题。我使用过weblogic 12c,soap UI 5.3.0