Technology Blogs by Members
Explore a vibrant mix of technical expertise, industry insights, and tech buzz in member blogs covering SAP products, technology, and events. Get in the mix!
cancel
Showing results for 
Search instead for 
Did you mean: 
Cortex2k
Active Participant

Back in March 2014 stephan.schluchter


One of the new features, is the XSLT 2.0 support for XSLT mappings, which provides new functions that could save a lot of XSLT 1.0 code or minimize the need for java mapping to achieve same functionality. Unfortunately I couldn't find much documentation about how to actually start using this new feature. Therefore I decided to write this step by step blog about how I implemented my first XSLT 2.0 mapping.


There are essential 3 things you need to do:


  1. Create and import an XSLT 2.0 mapping
  2. Download an external XSLT parser
  3. Tell PI/PO to look for the external parser and use it.


1. Create and import an XSLT 2.0 mapping


In my example I have a requirement of replacing the pound sign with the ISO code on all elements in an XML document, so I created the following XSL:


<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<xsl:output method="xml" indent="yes" omit-xml-declaration="no"/>
<xsl:strip-space elements="*"/>

<xsl:param name="search" select="'£'"/>
<xsl:param name="replace" select="'GBP'"/>

<xsl:template match="@*|*|comment()|processing-instruction()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="text()">
<xsl:analyze-string select="." regex="{$search}">
<xsl:matching-substring><xsl:value-of select="$replace"/></xsl:matching-substring>
<xsl:non-matching-substring><xsl:value-of select="."/></xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
</xsl:stylesheet>






Please note that I have set the stylesheet version="2.0" which indicates that I want to utilize XSLT 2.0 functions.

I then saved the XSL and compressed it as a .zip file. Hereafter I imported the archive in ES Builder.

2. Download an external XSLT parser.


In my test I used the Saxon 9 parser, which can be downloaded as a home edition from Sourceforge.


If you need further extensibility, the Professional and Enterprise edition can be optained directly from Saxonica homepage (Please note that these editions have license cost).


All other parsers should also work as long as they follow the JAXP specification.


In order for the mapping to use the parser, it needs to be imported to the software component that needs to utilize it. The procedure is the same as with importing the XSL document. In my case, I just imported the saxon9he.jar file.


Note:

When importing an external transformer, the following resources must be available in the archive(s), according to the JAXP specification:

  • /META-INF/services/javax.xml.transform.TransformerFactory
  • /META-INF/services/javax.xml.xpath.XPathFactory

The content of these resources defines the implementation of the transformer or XPATH evaluator.

3. Tell PI/PO to look for the external parser and use it.


(*Note: If you have a Dual Stack System, then please refer to evgeniy.kolmakov's excellent extension of this blog here: How to use external XSLT processor for PI Dual stack installations.)


To do this we must set the new global parameter: “com.sap.aii.ibrun.server.mapping.externalTransfomer” to true

(Note that the missing “r” in Transfomer is not a misspelling)


If this property is set to true, the mapping runtime will search for imported transformers, and will use one if found.

To maintain the parameters, perform the following steps:

  1. Access SAP NetWeaver Administrator at: http://<host:port>/nwa
    The variables host and port are the hostname and connection port of your AEX.
  2. Choose -> Configuration -> Infrastructure -> Java System Properties and select the “Services” tab and search for Service XPI: AII Config Service
  3. Ensure the custom calculated value for property com.sap.aii.ibrun.server.mapping.externalTransfomer is set to “true”

That’s it, now the PO should be good and ready to utilize your next fantastic XSLT 2.0 Mapping :wink:

40 Comments
Former Member
0 Kudos

Hi Chris,

Very Nice Blog..... Highly informative. But  I am having some doubts like whether following the same procedure can we use XSLT 2.0 in PI 7.11.

Cortex2k
Active Participant
0 Kudos

Hi Nav,

Thanks, glad you like it :smile:

According to Stephans blog mentioned in the beginning, the features is available for Process Orchestration 7.31 SP10&11 / 7.4 SP05&06, so I don't think you will be able to make it work on PI 7.11.


If you try it out, then please share the results.

Best regards,

Chris

0 Kudos

Hello Chris,

  Thanks for a very useful blog.

  We have implemented some map using XSLT 2.0. The mapping uses few of the functions 

  like for-each-group and replace. Saxon9he.jar has also been imported by making sure the

  required XSLT and XPath factory configuration files are available.

In order to enable the use of the external processor imported, the "AII Config service 

property "com.sap.aii.ibrun.server.mapping.externalTransfomer" is also been set to "true".

But still the runtime throwing error the used functions are not supported by the processor. 

Upon deploying and checking the XPI traces, we encountered that the imported processor

is not being referred by JDK. It is still referring to the internal Xalan processor.

Can you please provide us any inputs to identify the root cause of the issue.

By the way, PI version is: PI 7.4 dual stack SP9.

Thanks in advance..

Regards,

Manasa.

Former Member
0 Kudos

Hi Chris,


We are having requirement of Saxon Enterprise Edition in SAP Netweaver PI 7.4 system for which I need to import it JAR file but I am not aware how to import these jar files into SAP Netweaver PI 7.4 system and where to place it. Couldyou please help me with it asap..

former_member190293
Active Contributor
0 Kudos

Hi Sumit!

You should import your jar as Imported Archive in SCW where your xslt 2.0 mapping would be used.

Regards, Evgeniy.

former_member190293
Active Contributor
0 Kudos

Hi Chris!

Did you evaluate if it works for both PI/PO installations or for PI AEX/PO only?

Regards, Evgeniy.

Former Member
0 Kudos

Hi Kolmakov,

Thanks for your reply.

Could you please provide me with step by step screenshots..

Where can I find Imported Archive option in ESR?

SCW?

Regards,

Sumit

Cortex2k
Active Participant
0 Kudos

Hi Sumit

In ESR goto the SWCV that you need the XSLT 2.0 mapping for. Here you will have a namespace where your actual mapping objects are. In this namespace, you should have "Imported Archives". Find the Archive where your XSLT 2.0 mapping is located. Change object and click "Import Archive" Now add the saxon9he.jar file (or whatever XSLT parser you have downloaded)

Hope this explains it. Otherwise please feel free to ask again

Cheers,

Chris

Cortex2k
Active Participant
0 Kudos

You beat me to it Evgeniy :wink:


Thanks for helping out


Cheers,

Chris

Cortex2k
Active Participant
0 Kudos

Hi Evgeniy

I have actually only tried ot on PO single stack. But as long as it is at least 7.31 SP10 & 11 or 7.4 SP05&06 then I imagine that it should work.


If you test it out, then please let us know your findings

Cheers,

Chris

Former Member
0 Kudos

Hi Chris,

Thanks for your quick reply.

In ESR  SWCV  means Software Component version right?

I am unable to find Imported Archive option

COuld you please provide me your email id so that I can share more details .

Regards,

Sumit

former_member190293
Active Contributor
0 Kudos

Hi Chris!

I couldn't make it work for now. I've tried with Saxon 9 HE and Saxon-B.  In both cases I have error on XSLT 2.0 syntax and in error trace I can see that it raised by java's xalan processor, not Saxon.

Regards, Evgeniy.

Cortex2k
Active Participant
0 Kudos

Hi Sumit

How did you upload your XSLT then? Or didnt you upload it yet?

The import archive is located here (The SAP BASIS Software Component Version is just an example):

Cheers,

Chris

Cortex2k
Active Participant
0 Kudos

Hi Evgeniy

Did you set the new global parameter: “com.sap.aii.ibrun.server.mapping.externalTransfomer

to true?

Chris

Cortex2k
Active Participant

And by the way, if you dont see any "Imported Archives" then right click on the namespace and choose -> new -> Mapping objects -> Imported Archive and create a new one.

/Chris

Former Member
0 Kudos

Hi Chris,

Thanks for the above screenshot .

I haven't uploaded any XSLT till yet . I found the Imported archive option as per above screenshot. 

I am not sure whether xslt mapping creation has been done or not .

As Saxon EE is an alternative for XSLT 2.0 mapping tool hence I want to download Saxon EE   SaxonEE9-6-0-9J JAR  file and deploy it to SAP Netweaver PI 7.4  system

Please let me know what next I need to do to import Saxon EE jar file SaxonEE9-6-0-9J  from below screenshot.

Cortex2k
Active Participant
0 Kudos

Hi Summit

Please be aware that the SWCV that I used was just an example (SAP BASIS 7.40) You probably want to use your own instead.

When you have the "imported archive" you want to import your XSLT (Zipped) which contains the mapping, and then the saxon9ee.jar file.

(Refer to Imported Archives (XSLT/Java) - SAP XI: Design and Configuration Time - SAP Library for procedure if you are in doubt)

When done, you should change the parameter as described in section 3 of the blog.

Chris

former_member190293
Active Contributor
0 Kudos

Hi Chris!

Of course, I've set it.

Actually, I have one guess. Gonna try it on Monday.

Regards, Evgeniy.

former_member183249
Active Participant
0 Kudos

Hi Chris,

Nice blog.. :smile: :smile:

former_member190293
Active Contributor
0 Kudos

Hi Chris!

Finally, I've got it working :smile:

I described the solution for dual stack system in blog record:

http://scn.sap.com/community/pi-and-soa-middleware/blog/2016/07/04/how-to-use-external-xslt-processo...

Regards, Evgeniy.

Former Member
0 Kudos

Hi Chris,

Even after importing saxon9ee.jar file into imported archive of xslt mapping and set the parameter com.sap.aii.ibrun.server.mapping.externalTransfomer  value to True in exchange profile , it is still throwing error..Pls find below screenshots..

Please suggest how to proceed further

former_member190293
Active Contributor
0 Kudos

Hi Sumit!

Blog comments is not the right place to post questions about your technical problems.

Please start new discussion, thus much more experienced forum members will be able to help you with decision for your problem.

Regards, Evgeniy.

Cortex2k
Active Participant
0 Kudos

Hi Rahul

Thanks! I am glad you like it.

Have a great day 🙂

Cheers,

Chris

Cortex2k
Active Participant
0 Kudos

Hi Evgeniy

Perfect.. I just added a link to your blog post in step 3.

Thanks for helping out :cool:

Cheers,

Chris

antony_ferminus
Participant
0 Kudos

Hi Chris,

Thanks a lot for the Great blog.

It works just like that for me.

Regards,

Antony.

Cortex2k
Active Participant
0 Kudos

Hi Antony

Thanks and great to hear it worked out for you :smile:

Cheers,

Chris

0 Kudos

Hello Chris and guys/girls.

First of all - thanks for great blog. Everything explained nicely and without many words.

I've configured parameters as described and tried with several versions of Saxon parser (latest version 9.7 and also older 9.2 - just imported saxon9he.jar in each case), but still no success for me. :sad:

During mapping test (operation mapping) ES builder throws such error:

Transformer Configuration Exception occurred when loading XSLT <my xslt name goes here>; details: com.sap.aii.ib.server.mapping.execution.MappingClassNotFoundException: com/sap/aii/mapping/xslt/saxon/JavaExtensions$JavaFunctionLibrary.class

Any ideas what can be causing that?

I'm afraid this problem can be related to some issue in latest patch we applied on DEV system (we are on NW PI 7.4 single-stack with latest components SP13).

BR, Artem.

former_member190293
Active Contributor
0 Kudos

Hi Artem!

It's worth mention that Saxon HE processor doesn't support java extensions:

Not included in the Home Edition are: schema processing and schema aware XSLT and XQuery; support for higher-order functions; numerous Saxon extensions; calling out to Java methods;

If you use java extensions in your XSL transformations try Saxon-B, which also supports XSLT 2.0.

Regards, Evgeniy.

antony_ferminus
Participant
0 Kudos

Hi Artem,

According to the instruction i got it done recently. It is really simple. I am using pi 7.5.

Download the JAR saxon9he.jar extract it and upload  to the PI external archives.

After the export make sure that you see

javax.sml.transform.transformerFactory  with path  META-INF/Services/

If you do not see this means you have to search the correct jar file where you can find this line and download it.

Go to NWA java system property, then service tab and search

Service XPI: AII Config Service

and change the

com.sap.aii.ibrun.server.mapping.externalTransfomer is set to “true”.

That is it. It should work.

Regards,

Antony.

0 Kudos

Hello Evgeniy.

That's what is most confusing - I don't have any calls to Java methods in my mapping.

I've tried with simplest XSLT-mapping which is based on XSLT 1.0 (without any additional namespaces prefix except for xmlns:xsl)and executed successfully as such. After copying this mapping into SWCV where Saxon parser is imported - it starts to throw error shown above. Thank you for suggestion - I'll try with Saxon-B as well, but I'm afraid this is just another issue among others which we got along with newest SP. :sad:

BR, Artem.

0 Kudos

Hello Antony.

I did everything exactly like you described, but unfortunately with no success.

At the moment I have just two suggestions:

1. Latest SP broken external transformer functionality.

2. Maybe I need much older version of parser which was built using Java version corresponding to the one used in NW 7.4 (version 1.6). So far I have tried only with Saxon 9.2 (built on Java 1.7) and latest 9.7 (built on Java 1.8).

BR, Artem.

0 Kudos

Update: the error I mentioned above is really related to newest SP applied on our system (NW 7.4 SP13 with latest PLs which indeed is part of SPS15).

I have checked on another system (based on SP12 components) and it worked fine with latest Saxon version (even though XSLT mapping is running slowly when testing it in ES Builder).

So be extremely careful with patches !

BR, Artem.

antony_ferminus
Participant
0 Kudos

Hi Artem,

Can you post the recent error description or still it is the same as before?

It is not a bad idea to restart your java stack if you can.

First of all which NWDS you are using?

Did you install the XSLT2.0 processer in your NWDS?.

Is the xslt2.0 transfomation working on your NWDS?

https://www.youtube.com/watch?v=i5ygzJVkG1w

You can find the instruction on the youtube (4.55 min time).

Regards,

Antony.

0 Kudos

Hi Antony.

Thanks for your interest, but as I mentioned in my comment below - this is a problem of latest patch. I was able to run the same parser and XSLTs successfully on another system with lower patch level.

Also patched system was restarted - it didn't help.

Thanks for your link above - I hadn't used XSLT in eclipse before. Now gonna use it on such occasion.

BR, Artem.

Another update:

it seems that following note should fix the problem I've mentioned above:

2221350 - Support for Java Extensions in the SaxonHE XSLT Transformer

it refers to exactly the same class/package which is reported in the above exception and must be created according to the note as Function Library.

Unfortunately proposed solution doesn't work out of the box with latest version of Saxon HE parser (9.7) because of changed class hierarchy there (so attached code is not consistent anymore).

Still this is a valid solution for previous version(s) of Saxon parser. I was able to run XSLT 2.0 mappings using it with Saxon parser 9.5 (some older versions like 9.1/9.2 do not compile with it same way as it does not work with version 9.7).

Going to ask SAP for updating above note to make it searchable by exception text and also adding more code versions for different parser version (at least for the latest version 9.7, if possible - or otherwise it should be possible to disable use of Java extensions with external parsers which don't support them).

BR, Artem.

0 Kudos
Hello Artem,

did you get any response about the update of the note for Saxon HE parser 9.6 or higher?
We had the same problem and had installed Saxon 9.6 which was working fine, then patched the system to latest SP and it was not working anymore.
So I downgraded the saxon to 9.5 and applied 2221350 - Support for Java Extensions in the SaxonHE XSLT Transformer and then it was working.

But would be interesting if SAP will deliver a solution for Saxon 9.6 or higher.

Best Regards

Sebastian
helmutsaur
Member
0 Kudos
 

Hi Artem,

did you find any solution or did you get any response from SAP related this issue?

We face the same problem and are wondering if this issue has been solved in the meantime.

Thanks and Regards,

Helmut
Muniyappan
Active Contributor
0 Kudos

After changing the properties, run time was behaving weird. my understanding was if we enable 2.0, then runtime will look if any external processors are there or not. if not, then execute using jdk xalan 2.6.0 processor. if it finds the external processor, it will proceed with it. 

my observation, 

      1. if we use external processor archive imported in one namespace, it is used in all namespaces under one swcv. 

      2. If we dont import any external processor(archive in imported archive) then it complains with error transformer is not found.

    3. after changing the java system properties "com.sap.aii.ibrun.server.mapping.externalTransfomer" to false(turning off 2.0),mapping execution works in ESR but fails in runtime(while testing). after server restart it started working in runtime.

 4. execution takes longer in ESR. for xalan latest version, it is taking 18s, saxon is taking 4m to output the results.

0 Kudos
HI!

which version of Saxon did you use ?  WE always get an error saying:

om.sap.aii.ib.server.mapping.execution.MappingClassNotFoundException: com/sap/aii/mapping/xslt/saxon/JavaExtensions$JavaFunctionLibrary.class

and in xpi_inspector:










































20:41:06:662 H50NPOB ~[4],5,Dedicated_Application_Thread] ~ver.mapping.execution.MappingLoader META-INF/services/javax.xml.transform.TransformerFactory is no URL returning null.
Thrown:
java.net.MalformedURLException: no protocol: META-INF/services/javax.xml.transform.TransformerFactory
at java.net.URL.<init>(URL.java:587)
at java.net.URL.<init>(URL.java:479)
at java.net.URL.<init>(URL.java:428)
at com.sap.aii.ib.server.mapping.execution.MappingLoader.findResource(MappingLoader.java:328)
at java.lang.ClassLoader.getResource(ClassLoader.java:1113)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1303)
at com.sap.aii.ib.server.mapping.execution.MappingLoader.getResourceAsStream(MappingLoader.java:131)
at javax.xml.transform.SecuritySupport$4.run(SecuritySupport.java:94)
at java.security.AccessController.doPrivileged(Native Method)
at javax.xml.transform.SecuritySupport.getResourceAsStream(SecuritySupport.java:87)
at javax.xml.transform.FactoryFinder.findJarServiceProvider(FactoryFinder.java:292)
at javax.xml.transform.FactoryFinder.find(FactoryFinder.java:265)
at javax.xml.transform.TransformerFactory.newInstance(TransformerFactory.java:102)
at com.sap.aii.utilxi.xml.hardener.TransformFeatures.getSecuredFactory(TransformFeatures.java:48)
at com.sap.aii.utilxi.xml.hardener.TransformFeatures.getSecuredFactory(TransformFeatures.java:8)
at com.sap.aii.utilxi.xml.hardener.XMLResources.init(XMLResources.java:83)
at com.sap.aii.utilxi.xml.hardener.XMLResources.<init>(XMLResources.java:68)
at com.sap.aii.utilxi.xml.hardener.XMLFactory.getXMLResources(XMLFactory.java:189)
at com.sap.aii.utilxi.xml.hardener.XMLFactory.getSecuredTransformerFactory(XMLFactory.java:89)
at com.sap.aii.ib.server.mapping.execution.MappingPool$DummyPool.checkOutJdkTransformer(MappingPool.java:642)
at com.sap.aii.ib.server.mapping.execution.MappingPool$DummyPool.checkOut(MappingPool.java:615)
at com.sap.aii.ib.server.mapping.execution.XSLTMapping.executeStep(XSLTMapping.java:54)
at com.sap.aii.ib.server.mapping.execution.Mapping.execute(Mapping.java:60)
at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:87)
at com.sap.aii.ib.server.mapping.execution.MappingHandler.map(MappingHandler.java:54)
at com.sap.aii.ibrep.server.mapping.rt.MappingHandlerAdapter.run(MappingHandlerAdapter.java:139)
at com.sap.aii.ibrep.server.mapping.exec.ExecuteIfMapCommand.execute(ExecuteIfMapCommand.java:33)
at com.sap.aii.ib.server.mapping.exec.CommandManager.execute(CommandManager.java:43)
at com.sap.aii.ibrep.server.mapping.ServerMapService.execute(ServerMapService.java:40)
at com.sap.aii.ibrep.server.mapping.MapServiceBean.execute(MapServiceBean.java:40)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.ejb3.runtime.impl.RequestInvocationContext.proceedFinal(RequestInvocationContext.java:47)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:166)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatesTransition.invoke(Interceptors_StatesTransition.java:19)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Resource.invoke(Interceptors_Resource.java:50)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.doWorkWithAttribute(Interceptors_Transaction.java:37)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_Transaction.invoke(Interceptors_Transaction.java:21)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_MethodRetry.invoke(Interceptors_MethodRetry.java:46)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:191)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_StatelessInstanceGetter.invoke(Interceptors_StatelessInstanceGetter.java:23)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_SecurityCheck.invoke(Interceptors_SecurityCheck.java:25)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.Interceptors_ExceptionTracer.invoke(Interceptors_ExceptionTracer.java:17)
at com.sap.engine.services.ejb3.runtime.impl.AbstractInvocationContext.proceed(AbstractInvocationContext.java:179)
at com.sap.engine.services.ejb3.runtime.impl.DefaultInvocationChainsManager.startChain(DefaultInvocationChainsManager.java:138)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:172)
at com.sap.engine.services.ejb3.runtime.impl.DefaultEJBProxyInvocationHandler.invoke(DefaultEJBProxyInvocationHandler.java:99)
at com.sun.proxy.$Proxy1648.execute(Unknown Source)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.sap.engine.services.rmi_p4.P4DynamicSkeleton.dispatch(P4DynamicSkeleton.java:241)
at com.sap.engine.services.rmi_p4.DispatchImpl._runInternal(DispatchImpl.java:483)
at com.sap.engine.services.rmi_p4.server.ServerDispatchImpl.run(ServerDispatchImpl.java:83)
at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:72)
at com.sap.engine.services.rmi_p4.P4Message.execute(P4Message.java:43)
at com.sap.engine.services.cross.fca.FCAConnectorImpl.executeRequest(FCAConnectorImpl.java:1055)
at com.sap.engine.services.rmi_p4.P4Message.process(P4Message.java:59)
at com.sap.engine.services.cross.fca.MessageReader.run(MessageReader.java:55)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:122)
at com.sap.engine.core.thread.execution.Executable.run(Executable.java:101)
at com.sap.engine.core.thread.execution.CentralExecutor$SingleThread.run(CentralExecutor.java:328)
20:41:06:663 H50NPOB ~[4],5,Dedicated_Application_Thread] ~ver.mapping.execution.MappingLoader Super class has not found the resource. Looking for resource by myself.
20:41:06:663 H50NPOB ~[4],5,Dedicated_Application_Thread] ~ing.execution.InternalMappingFinder load 496ac270-5e53-11e8-cec9-ffd40afc2354, http://s-sap.net/inv/mapping, -1, META-INF/services/javax.xml.transform.transformerfactory
20:41:07:360 H50NPOB ~[4],5,Dedicated_Application_Thread] ~ing.execution.InternalMappingFinder found resource META-INF/services/javax.xml.transform.transformerfactory, 496ac270-5e53-11e8-cec9-ffd40afc2354, -1, http://s-sap.net/inv/mapping.
20:41:07:361 H50NPOB ~[4],5,Dedicated_Application_Thread] ~ver.mapping.execution.MappingLoader Loaded resource META-INF/services/javax.xml.transform.TransformerFactory

 
Cortex2k
Active Participant
0 Kudos
Hi Martin

In my test I used the Saxon 9 parser, which can be downloaded as a home edition fromSourceforge.

 

Cheers

Chris
Labels in this area