मैंने इस प्रश्न को Mirth forum पर भी पूछा है।जेएक्स-डब्ल्यूएस जावा क्लाइंट, डब्ल्यूसीएफ सेवा इंटरऑपरेबिलिटी: "400: खराब अनुरोध"
हम वर्तमान में ओपन सोर्स हेल्थ केयर एकीकरण इंजन मिर्थ का उपयोग कर डब्ल्यूसीएफ सेवा से जुड़ने की कोशिश कर रहे हैं। मिर्थ जावा-आधारित है, आंतरिक रूप से मुले का उपयोग करता है जो जेएक्स-डब्ल्यूएस का उपयोग करता है। डब्ल्यूसीएफ सर्वर HTTP स्टेटस कोड "400: खराब अनुरोध" लौटा रहा है। हमारे पास डब्ल्यूसीएफ सर्वर तक आसान पहुंच नहीं है।
क्लाइंट के साथ संचार सी # में अच्छी तरह से काम करता है। दृश्य स्टूडियो में, में सेवा संदर्भ जोड़ने के लिए, और फिर मुख्य():
PatientRegistryQueryFulfiller.GetDemographicsClient svc = new PatientRegistryQueryFulfiller.GetDemographicsClient();
doc.Load(@"C:\MirthTesting\PRPA_EX201307NO_10_PatientReg_GetDemographics.xml");
PatientRegistryQueryFulfiller.PRPA_IN201307NO patientRegistryRequest = (PatientRegistryQueryFulfiller.PRPA_IN201307NO)ObjectSerializer.DeserializeObject(doc, typeof(PatientRegistryQueryFulfiller.PRPA_IN201307NO));
PatientRegistryQueryFulfiller.PRPA_IN201307NOResponse patientRegistryResponse = svc.GetDemographics(patientRegistryRequest);
doc = ObjectSerializer.SerializeObject(patientRegistryResponse.Item);
(WSDL से) स्वत: जनरेट की WCF ग्राहक कि समाप्ति बिंदु के साथ एक app.config है, और इस बंधन:
<bindings>
<basicHttpBinding>
<binding name="PatientRegistryQueryFulfiller_Binding" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard"
maxBufferSize="65536" maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered"
useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="655360"
maxBytesPerRead="4096" maxNameTableCharCount="655360" />
<security mode="None">
<transport clientCredentialType="None" proxyCredentialType="None"
realm="" />
<message clientCredentialType="UserName" algorithmSuite="Default" />
</security>
</binding>
</basicHttpBinding>
</bindings>
डब्ल्यूसीएफ-समाधान में अलग-अलग काम किया गया एकमात्र चीज maxNameTableCharCount और maxArrayLength को प्रश्न में बाध्यकारी के लिए readerQuotas टैग में विस्तारित कर रहा है, बाकी को डिफ़ॉल्ट मानों के साथ छोड़ दिया गया है। हालांकि, मुझे इन्हें मिर्थ में सेट करने का कोई तरीका नहीं मिला है, क्या यह वास्तव में त्रुटि का कारण होना चाहिए।
हम मिर्थ बनाम 2.2.1 (सबसे हालिया चेकआउट) चला रहे हैं, और मिर्थ चैनल दोनों को पढ़ने और एचएल 7 वी 3 दस्तावेज़ भेजने के लिए सेट है। समस्या तब उत्पन्न होती है जब डब्ल्यूसीएफ-सेवा के साथ संवाद करने की कोशिश की जाती है। गंतव्य एक वेब सेवा प्रेषक है, जिसमें सेवा और बंदरगाह दोनों डब्लूएसडीएल से पढ़े जाते हैं। कोई आश्रय नहीं है, और लिफाफा केवल उपलब्ध ऑपरेशन से उत्पन्न होता है। हम एमटीओएम का उपयोग नहीं कर रहे हैं।
हम काफी निश्चित हैं कि यह जेएक्स-डब्ल्यूएस और डब्ल्यूसीएफ इंटरऑपरेबिलिटी से संबंधित है। कोई सामान्य संकेत?
हमने जेएक्स-डब्ल्यूएस कनेक्शन पर गुणों को सेट करने का प्रयास किया है। प्रमोद के आंत में दीप, हम http हिस्सा आकार सेट की कोशिश की है:। dispatch.getRequestContext() डाल (JAXWSProperties.HTTP_CLIENT_STREAMING_CHUNK_SIZE, 8192) (WebServiceMessageDispatcher.Java लाइन 140)
स्टैक ट्रेस इस प्रकार है:
ERROR-410: Web Service Connector error
ERROR MESSAGE: Error connecting to web service.
com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 400: Bad Request
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(Unknown Source)
at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(Unknown Source)
at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Unknown Source)
at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Unknown Source)
at com.sun.xml.internal.ws.client.Stub.process(Unknown Source)
at com.sun.xml.internal.ws.client.dispatch.DispatchImpl.doInvoke(Unknown Source)
at com.sun.xml.internal.ws.client.dispatch.DispatchImpl.invoke(Unknown Source)
at com.mirth.connect.connectors.ws.WebServiceMessageDispatcher.processMessage(WebServiceMessageDispatcher.java:176)
at com.mirth.connect.connectors.ws.WebServiceMessageDispatcher.doDispatch(WebServiceMessageDispatcher.java:106)
at com.mirth.connect.connectors.ws.WebServiceMessageDispatcher.doSend(WebServiceMessageDispatcher.java:204)
at org.mule.providers.AbstractMessageDispatcher.send(AbstractMessageDispatcher.java:164)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:191)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:130)
at org.mule.routing.outbound.AbstractOutboundRouter.send(AbstractOutboundRouter.java:85)
at org.mule.routing.outbound.FilteringMulticastingRouter.route(FilteringMulticastingRouter.java:54)
at org.mule.routing.outbound.OutboundMessageRouter$1.doInTransaction(OutboundMessageRouter.java:78)
at org.mule.transaction.TransactionTemplate.execute(TransactionTemplate.java:48)
at org.mule.routing.outbound.OutboundMessageRouter.route(OutboundMessageRouter.java:82)
at org.mule.impl.model.DefaultMuleProxy.onCall(DefaultMuleProxy.java:247)
at org.mule.impl.model.seda.SedaComponent.doSend(SedaComponent.java:209)
at org.mule.impl.model.AbstractComponent.sendEvent(AbstractComponent.java:277)
at org.mule.impl.MuleSession.sendEvent(MuleSession.java:201)
at org.mule.routing.inbound.InboundMessageRouter.send(InboundMessageRouter.java:176)
at org.mule.routing.inbound.InboundMessageRouter.route(InboundMessageRouter.java:143)
at org.mule.providers.AbstractMessageReceiver$DefaultInternalMessageListener.onMessage(AbstractMessageReceiver.java:487)
at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:266)
at org.mule.providers.AbstractMessageReceiver.routeMessage(AbstractMessageReceiver.java:225)
at com.mirth.connect.connectors.vm.VMMessageReceiver.getMessages(VMMessageReceiver.java:223)
at org.mule.providers.TransactedPollingMessageReceiver.poll(TransactedPollingMessageReceiver.java:108)
at org.mule.providers.PollingMessageReceiver.run(PollingMessageReceiver.java:97)
at org.mule.impl.work.WorkerContext.run(WorkerContext.java:290)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1061)
at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:575)
at java.lang.Thread.run(Unknown Source)
है? –
एक और विचार सभी अनइडेड कॉन्फ़िगर बिट्स से छुटकारा पाने के लिए है और केवल उन चीजों को कॉन्फ़िगर करें जिन्हें आप चाहते हैं। स्वत: जेनरेट की गई कॉन्फ़िगरेशन फ़ाइलें अनावश्यक रूप से वर्बोज़ हैं। शायद समस्या का समाधान नहीं होगा, लेकिन वैसे भी मदद कर सकते हैं। –