cancel
Showing results for 
Search instead for 
Did you mean: 

A mistery with our migrated Cominication Channels

Former Member
0 Kudos

Hi,

We are migrating our XI from 2.0 to 3.0.

At the moment we are not using the adapter framework, we are using an external one.

Our integration consist in a CRM connected to an XI connected to an MQ.

The connection between XI and MQ is done with jms adapters. Our problem is in the XI->MQ direction.

We collect the next error in the monitorization:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>

- <!-- Call Adapter

-->

- <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="">

<SAP:Category>XIServer</SAP:Category>

<SAP:Code area="INTERNAL"><b>HTTP_RESP_STATUS_CODE_NOT_OK</b></SAP:Code>

<SAP:P1>400</SAP:P1>

<SAP:P2>bad request</SAP:P2>

<SAP:P3 />

<SAP:P4 />

<SAP:AdditionalText><html> <head> <title>Transport Service Error</title> </head> <body> <h1>HTTP/1.0 400</h1> <h3>bad request</h3> </body> </html></SAP:AdditionalText>

<SAP:ApplicationFaultMessage namespace="" />

<SAP:Stack><b>HTTP response contains status code 400 with the description bad request Error when sending by HTTP (error code: 400, error text: bad request)</</b>SAP:Stack>

<SAP:Retry>M</SAP:Retry>

</SAP:Error>

That occurs when the message is sent from CRM (EOIO). But if we use a file adapter(instead CRM) for sending the message(EO), it is correctly processed(using the same namespaces, mappings, interfaces...).

Any ideas?

Accepted Solutions (0)

Answers (2)

Answers (2)

Former Member
0 Kudos

In the migration process the endpoint became a Comunication Channel,the jms adapter remains more or less the same as it was in the XI 2.0, it is placed in the new Plain J2SE Adapter Engine, not in the adapter framework.

You can see here the parametrization of the Comunication Channel:

<a href="http://img242.imageshack.us/img242/8029/screenhunter1st0.png">Comunication Channel</a>

Regards

Gonzalo

Message was edited by: Gonzalo del Castillo

stefan_grube
Active Contributor
0 Kudos

So your J2SE adapter is based on XI 3.0? If not, you have to change the message protocol to XI 2.0.

In my tests I could not find any problem concerning EOIO. Do you have the latest version of the J2SE adapter engine? Maybe you can apply a newer patch.

Regards

Stefan

Former Member
0 Kudos

Hi,

We have configured our jms adapter as it is explained here:

http://help.sap.com/saphelp_nw04/helpdata/en/e8/01683c43e87845e10000000a11402f/frameset.htm

I write too the parametrization of our adapter in case there is something wrong.

Regards

Gonzalo

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

# JMS Adapter Configuration

#

# This configuration can be used as a template to configure the

# JMS receiver adapter

#

#**************************************************************************

# Set XI message protocol version. This example is designed for XI 3.0

version=30

#**************************************************************************

#

# JMS message sender class Uncomment for sending JMS messages 

classname=com.sap.aii.messaging.adapter.ModuleTransport2JMS

#**************************************************************************

#

# set if a transacted JMS Session should be used (default: true)

#JMSSession.sessionTransacted=false

#

# set the delivery mode of the JMS MessageProducer (QueueSender, default: PERSISTENT)

#JMS.MessageProducer.DeliveryMode=NON_PERSISTENT

#

# set delay in milliseconds before processing next message after an error

# (default: 0)

#errorDelay=10000

#

# set delay in milliseconds before trying to reestablish the JMS connection

# after a connection error (default: -1 (do not try to reconnect))

#reconnectDelay=10000

#

# force reconnect (only to be used if the JMS Provider does not support the

# JMSExceptionListener functionality) the reconnect is only attempted if

# the JMSException message contains the forceReconnectString or if the

# forceReconnectString is set to * (default: forceReconnectString is not

# set -> no reconnect is attempted

#forceReconnectString=MQJMS2007

#**************************************************************************

#

# set the message formats you want to process 

# formats are only needed if they cannot be evaluated at runtime 

#

# JMSMessage Type can be set to TextMessage or BytesMessage 

# it is only used for sending JMS messages

#JMSMessage.type=BytesMessage

JMSMessage.type=TextMessage

#

# TransportMessage Type can be set to TransportMessage or XMBMessage

# it is used for sending and receiving TransportMessages and XMBMessages

#TransportMessage.type=TransportMessage

TransportMessage.type=XMBMessage

#**************************************************************************

#

# uncomment and adjust parameters for Transformation Type

# (binding of JMS TransportMessage); insert your class here for an

# individual binding between JMS and TransportMessage 

#

# uncomment the following line for using bindings that belong to Tunneling

#transformClass=com.sap.aii.messaging.adapter.trans.JMSTunneling

# uncomment the following line for using bindings that belong to

# SinglePayloadBinding

transformClass=com.sap.aii.messaging.adapter.trans.JMSSinglePayloadBinding
#

#**************************************************************************

#

# uncomment and adjust parameters for the HTTP listener ports to wait for

# XI messages

XI.httpPort=8237

XI.httpService=/JMS

#

#**************************************************************************

#

# uncomment and adjust parameters for loading JMS administrated objects via

# JNDI

# uncomment and adjust parameters if not the default context should be used

#JNDI.InitialContext.property.1=java.lang.String

#{javax.naming.Context.INITIAL_CONTEXT_FACTORY}, java.lang.String

#com.sap.engine.services.jndi.InitialContextFactoryImpl

#JNDI.InitialContext.property.2=java.lang.String

#{javax.naming.Context.PROVIDER_URL}, java.lang.String localhost:50004

#JNDI.InitialContext.property.3=java.lang.String

#{javax.naming.Context.SECURITY_PRINCIPAL}, java.lang.String Administrator

#JNDI.InitialContext.property.4=java.lang.String

#{javax.naming.Context.SECURITY_CREDENTIALS}, java.lang.String sap

# set the Lookup Names

#JMS.JNDILookupNameQueueConnectionFactory=jmsfactory/default/joetest

#JMS.JNDILookupNameQueue=jmsQueues/default/sapDemoQueue

#**************************************************************************

#

# uncomment and adjust parameters for loading JMS administrated objects

# from the file system

#JMS.FileNameQueueConnectionFactory=SAPQueueConnectionFactory.ser

#JMS.FileNameQueue=SAPQueue.ser

#**************************************************************************

#

# uncomment and adjust parameters for creating SonicMQ

# JMS administrated objects 

JMS.QueueConnectionFactoryImpl.classname=com.ibm.mq.jms.MQQueueConnectionFactory
JMS.QueueConnectionFactoryImpl.method.setHostName=java.lang.String emsxil601des
JMS.QueueConnectionFactoryImpl.method.setChannel=java.lang.String MQXIDW1
JMS.QueueConnectionFactoryImpl.method.setTransportType=java.lang.Integer {com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP}
JMS.QueueConnectionFactoryImpl.method.setQueueManager=java.lang.String MQXIDW1
#JMS.QueueConnectionFactoryImpl.method.setCCSID=java.lang.Integer 819
JMS.QueueConnectionFactoryImpl.user=mqm
JMS.QueueConnectionFactoryImpl.password=mqm


#JMS.QueueConnectionFactoryImpl.constructor=java.lang.String p49512:2506

#JMS.QueueImpl.classname= progress.message.jclient.Queue

#JMS.QueueImpl.constructor=java.lang.String SampleQ1

#**************************************************************************

#

# uncomment and adjust parameters for creating WebSphereMQ

# JMS administrated objects 

#JMS.QueueConnectionFactoryImpl.classname=com.ibm.mq.jms.MQQueueConnectionFactory

#JMS.QueueConnectionFactoryImpl.method.setHostName=java.lang.String p24537

#JMS.QueueConnectionFactoryImpl.method.setChannel=java.lang.String JAVA.CHANNEL

#JMS.QueueConnectionFactoryImpl.method.setTransportType=java.lang.Integer {com.ibm.mq.jms.JMSC.MQJMS_TP_CLIENT_MQ_TCPIP}

#JMS.QueueConnectionFactoryImpl.method.setQueueManager=java.lang.String QM_p24537

#JMS.QueueImpl.classname= com.ibm.mq.jms.MQQueue

#JMS.QueueImpl.constructor=java.lang.String postcard

#JMS.QueueImpl.method.setTargetClient=java.lang.Integer {com.ibm.mq.jms.JMSC.MQJMS_CLIENT_NONJMS_MQ}

#**************************************************************************

#

# uncomment and adjust parameters for using a dispatcher ***

#Dispatcher.class=com.sap.aii.messaging.adapter.ConversionDispatcher

#Dispatcher.namespace=namespace1

#namespace1.ConversionDispatcher.logPayload=true

#namespace1.Service.1=Plain2XMLService

#namespace1.Plain2XMLService.class=com.sap.aii.messaging.adapter.Conversion

#namespace1.Plain2XMLService.xml.conversionType=SimplePlain2XML

#namespace1.Plain2XMLService.xml.processFieldNames=fromConfiguration

#namespace1.Plain2XMLService.xml.fieldNames=a,b,c

#namespace1.Plain2XMLService.xml.fieldSeparator=;

#namespace1.Service.2=XSLTService

#namespace1.XSLTService.class=com.sap.aii.messaging.adapter.XSLTConversion

#namespace1.XSLTService.XSLTConversion.XSLTFileName=Data/DemoConversion.xsl

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Dispatcher.class=com.sap.aii.messaging.adapter.ConversionDispatcher
Dispatcher.namespace=dns
dns.ConversionDispatcher.logPayload=true
dns.Service.2=XSLTService
dns.XSLTService.class=com.sap.aii.messaging.adapter.XSLTConversion
#dns.XSLTService.XSLTConversion.XSLTFileName=Data/DemoConversion.xsl
dns.XSLTService.XSLTConversion.XSLTFileName=Data/endesaconvert.xsl
#dns.XSLTService.XSLTConversion.XSLTFileName=Data/prueba.xsl

#Parßmetro a±adido por petici¾n de SAP
Debug.dumpDir=/tmp/jms_ae

maxFileSize=1000

stefan_grube
Active Contributor
0 Kudos

Could you explain, which JMS adapter you use? Is it the JMS adapter of the XI 2.0 J2SE adapter framework?

Regards

Stefan