HTTP Post instead of C1 OnRamp sendEnvelope February 2014 I

advertisement
HTTP Post instead of C1 OnRamp sendEnvelope
February 2014
I
II
III
IV
V
VI
VII
Try to get C1 OnRamp sendEnvelope working with BizTalk
MarketSite Messaging Layer, MML, continues to be used
How business partner works
webMethods package IBD2_xCBL30 changes
webMethods package PostxCBLAck is new
webMethods service pub.client:http
C1 OnRamp Alias definition still required
=====================================================
I
Try to get C1 OnRamp sendEnvelope working with BizTalk
Tried to get sendEnvelope to work
sendEnvelope is part of webMethods in package wmMarketConnect. Pretty sure
webMethods bought CommerceOne around the year 2000 and the C1 OnRamp came
from CommerceOne. No source code is available.
Best guess is that sendEnvelope fails because it’s expecting some kind of proprietary
communications, possibly involving the user Id + password log in that’s defined in the C1
OnRamp.
Business partner worked with MicroSoft consultant and the conclusion was that all is
good on their side.
Unable to find documentation saying what sendEnvelope is attempting to do so it put
the business partner in a difficult spot.
Software AG forum
http://tech.forums.softwareag.com/techjforum/posts/list/0/52535.page
As of 2014-02-10 there was one suggestion, but no solution.
Ventyx case 00211900
Ventyx says it’s not their problem.
II
MarketSite Messaging Layer, MML, continues to be used
MML envelope with xCBL version 3.0 transaction, eg, Order, and attachments is still being used.
III
How business partner works
As an asynchronous transaction within a stateful session, the business partner accepts the HTTP
Post transaction and creates the MML envelope containing the Ack transaction and returns it.
The MML envelope returned from the business partner, contains an Ack transaction identifying
the original envelope by sending back the MML header field x-Message-Id in <Ack><MessageId>.
IV
webMethods package IBD2_xCBL30 changes
sendxCBL30
There are a few more changes not included below to give more accurate error
messages, below is the guts.
String C1OnRampOrHTTP = " ";
String serviceInvoked = "pub.marketconnect.transport:sendEnvelope";
try {
if (!POReleaseNbr.equals("00000")) {
C1OnRampOrHTTP is new parameter in package IBD2_xCBL30 configuration file,
IntegrationServer\packages\IBD2_xCBL30\config\xCBL30parms.xml
if (PO.getString("C1OnRampOrHTTP") != null) {
C1OnRampOrHTTP = PO.getString("C1OnRampOrHTTP");
}
if (C1OnRampOrHTTP.equals("HTTP")) {
serviceInvoked = "PostxCBLAck.HTTPPost:dataTransmit";
svcInp.put("StringOrEnvelope", "Envelope");
if (in.containsKey("TRACE"))
if (in.getString("TRACE").equals("true"))
svcInp.put("TRACE", "true");
//Debug
//doInvoke("IBD.MiscUtility", "dumpPipeline", svcInp);
svcOut = doInvoke("PostxCBLAck.HTTPPost", "dataTransmit", svcInp);
if (svcOut.getString("STATUS").equals("ERROR")) {
ReplyDoc.put("Status", "INERROR");
ErrorItem[0].put("ErrorType", "999");
ErrorItem[0].put("Message", "Error invoking " + serviceInvoked + " " +
svcOut.getString("ERRORMSG"));
ReplyDoc.put("ErrorList", ErrorList);
//--*Update ReplyDoc to pipeline
out.put("ReplyDoc", ReplyDoc_rec);
return out;
}
} else {
svcOut = doInvoke("pub.marketconnect.transport", "sendEnvelope", svcInp);
}
}
V
webMethods package PostxCBLAck is new
Goal is to replace sendEnvelope.
Package PostxCBLAck configuration file,
IntegrationServer\packages\PostxCBLAck\config\PostConfig.xml
Included the target URL as webMethods does not provide any services for reading the
C1 OnRamp alias definitions.
<?xml version="1.0"?>
<PostConfiguration>
<ConfigurationName>PostConfiguration</ConfigurationName>
<LastUpdated>2014-02-03-00.00.00.000000</LastUpdated>
<LastUpdatedBy>personID</LastUpdatedBy>
<dbAlias>database</dbAlias>
<PostURL>https://business.partner.com/HTTPReceive.dll</PostURL>
</PostConfiguration>
HTTPPost:dataTransmit
HTTPPost:dumpStringMMLEnvelope
Replaces the C1 OnRamp log by writing the MML data and reply to
\IntegrationServer\IndusBuyDemand\backup\StringMMLEnvelope-CCYY-MM-DDHH.MM.SS.FFFFFF.txt
HTTPPost:envelopeToString
Converts the MML envelope object to a String.
HTTPPost:getFileString
Read a file into a String. Used for testing by testFileStringPost.
HTTPPost:HTTPPost
Set up for and invoke pub.client:http and set up the output.
HTTPPost:retainMsgID
Set aside the outbound MML header x-Message-Id for comparison with reply.
HTTPPost:testFileStringPost
Use to send contents of \IntegrationServer\IndusBuyDemand\MML_xCBL_Test.xml. The
file contains a MML envelope only.
HTTPPost:validateReply
The reply should be a MML envelope with an Ack transaction. The Ack’s
<Ack><MessageId> is compared to the retained message ID.
VI
webMethods service pub.client:http
timeout
timeout is describe because during testing there are occurrences of pub.client:http not
having a reply.
Error invoking PostxCBLAck.HTTPPost:dataTransmit HTTPPost: service failed to
complete. com.wm.app.b2b.server.ServiceException:
java.net.SocketTimeoutException: Read timed out
webMethods_Integration_Server_Built-In_Services_Reference_6_5.pdf
page 54 begins spec for pub.client:http
page 58
Usage Notes
If url begins with https:, you can use pub.security:setKeyAndChain to specify the
certificate chain. If you do not specify a certificate chain, pub.client:http uses
the default outbound SSL certificate settings to authenticate the resources.
If pub.client:http does not receive a response within the timeout period
specified in the server’s watt.net.timeout parameter, it will throw an exception.
For information about the watt.net.timeout parameter, see the webMethods
Integration Server Administrator’s Guide.
webMethods Integration Server Administrator's Guide 6.5.pdf
page 105
Timeout
The Timeout parameter specifies the length of time the server waits for a
response from a target server. If the Integration Server does not receive a
response in the allotted time, it retries the request up to the number of times
specified by the Retries parameter. When the allowed number of retries is
exceeded, the server returns an exception. When you install the Integration
Server, the Timeout parameter is set to 3 minutes. For most sites this is a
reasonable setting; however, you may need to adjust this value if you
work with targets that have longer response times than this (e.g., large
commercial Web sites or databases during peak periods).
20140213 Asset Suite development region’s webMethods has been set to zero
and has not had timeout problems. Changed to 180 seconds to sync with test
region. Test with C1 OnRamp done again just to make sure it’s not a timeout
issue and it still fails.
Extended
No timeout settings.
20140213 Asset Suite test region has been set to 5 seconds and has intermittent
problems. Changed to 180 seconds. It appears the “Outbound HTTP Settings”
timeout trumps the extended watt.net.timeout. The Extended values are left
the same.
Extended
watt.server.keepAliveTimeout=95000
watt.net.timeout=180
page 379
watt.net.timeout
Specifies the number of seconds the server waits for an HTTP request to be
fulfilled before the request times out. The default is 0.
VII
C1 OnRamp Alias definition still required
Alias is still needed as it is referenced in IntegrationServer\packages\IBD2_xCBL30\config\
xCBL30parms.xml <ConfigurationMaster> <PO> <MarketConnectAlias> and the MPID is used
during the MML envelope creation.
*** end ***
Download