Bonjour
pour faciliter les connexions à SAP j'ai développé une petite factory qui utilise sapjco3 et sapidoc3
le but est de faciliter l'utilisation de sapjco en fournissant un factory.
La connexion est définie comme une ressource classique en java et bénéficie donc de la possibilité "try with resource" de java7
de plus la connexion factory expose via jmx l'accès au information sur la librairie sapjco, permet de modifier dynamiquement le niveau de trace.
pour chaque connexion (destination au sens SAP) un MBean est exposé permetant de visualiser ses propriétés et assure une test de connexion (ping)
une difficulté rencontrée avec sapjco3 est que cette librairie ne peux être utilisée avec maven sans à utiliser le scope système ce qui ne facilite pas la portabilité du projet de poste en poste. pour pallier cette difficulté j'ai inclus deux sous projet sapjco et sapidoc qui ne sont que des coquilles vides reproduisant l'API de SAP.
cela permet de compiler un project jco ou idoc sans avoir les librairie. mais au runtime rien ne peut se substituer aux librairies fournies par SAP.
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 DestinationDataProvider.startup(4, "target"); Properties prop = readProperties(); JcoConnexionFactory connexionFactory = new JcoConnexionFactoryImpl(); try( JCoConnexion connexion = connexionFactory.getConnexion(aDestinationName, prop);){ JCoDestination destination = connexion.getDestination(); destination.ping(); DestinationDataProvider.shutdown(); }...
Vous pouvez l'utiliser avec osgi
Dans ce cas le démarrage ( DestinationDataProvider.startup() et l'arrêt (DestinationDataProvider.shutdown() sont automatiques: pris en charge par l'activator.
vous pouvez l'utilisé via bleuprint (ou spring-dm)
Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45 <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0" xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd"> <manifest xmlns="http://karaf.apache.org/xmlns/deployer/blueprint/v1.0.0" xsi:schemaLocation="http://karaf.apache.org/xmlns/deployer/blueprint/v1.0.0 http://karaf.apache.org/xmlns/deployer/blueprint/v1.0.0"> Export-Service = com.sap.conn.jco.factory.JCoConnexion Bundle-Name = CUSTOMER :: SAP :: IE2 Bundle-Version = 1.0.1 Bundle-Vendor = MyCompagnie Bundle-Description = SAP Connexion IE2 Bundle-SymbolicName = sap-ie2 </manifest> <reference id="jcoFactory" timeout="20000" interface="com.sap.conn.jco.factory.JcoConnexionFactory" filter="(name=JcoConnexionFactory)" /> <bean factory-ref="jcoFactory" id="sap-ie2" factory-method="getConnexion" destroy-method="close"> <argument value="ie2" /> <argument> <props> <prop key="jco.client.ashost">localhost</prop> <prop key="jco.client.sysnr">40</prop> <prop key="jco.client.client">100</prop> <prop key="jco.client.user">testuser</prop> <prop key="jco.client.passwd">testuser</prop> <prop key="jco.client.lang">EN</prop> <!-- Load balancing --> <prop key="jco.client.gwhost">localhost</prop> <prop key="jco.client.gwserv">sapgw40</prop> <prop key="jco.destination.pool_capacity">10</prop> <!-- (in secondes) --> <prop key="jco.destination.expiration_check_period">10</prop> <prop key="jco.destination.expiration_time">10</prop> </props> </argument> </bean> <!-- use the connexion on bean or share it as service like this --> <service ref="sap-ie2" interface="com.sap.conn.jco.factory.JCoConnexion"> <service-properties> <entry key="destinationName" value="IE2"/> </service-properties> </service> </blueprint>
Vous trouverez ce projet sur github
https://github.com/sekaijin/jco-factory/
A+JTY
Partager