Goeiemorgen allen,
Ik zit al een tijdje met een probleem waar ik nog geen oplossing voor heb verzonnen. Het is als volgt:
Wij hebben op onze Middleware data staan die naar ons SAP-backend moet. Dit doen we door functies in SAP aan te roepen met de SapJCo library. Deze functies roepen we aan, geven een import/export-parameter (of meerdere) mee en daarmee gaat SAP aan de haal met de gegevens die wij aangeven.
Niets nieuws voor ons en zeker niets zwaars. Nu gaan we echter over op meerdere servers naar meerdere SAP-servers, waarbij ook nog meerdere users gebruikt moeten gaan worden voor de verbindingen. Op deze manier kunnen we in SAP goed onderscheid maken tussen de verschillende functies en waar de calls vandaan komen of waar de listeners voor functies vanuit SAP staan en welke specifieke bij welke functie hoort.
Nu het technische gedeelte. Wat ik probeer te doen is het maken van een library die verschillende instanties van de "EaiSAPServer" kan maken. Deze instanties zorgen ervoor dat we via verschillende wegen contact kunnen leggen met SAP en we data over kunnen gooien.
In mijn library heb ik het volgende (vereenvoudigd):
Ik roep deze code aan met het volgende:
Bij het aanroepen van de code lokaal gaat het helemaal goed en kan ik meerdere servers instantieren vanuit verschillende classes zonder problemen. De servers werken en kunnen listeners toegevoegd krijgen zodat alles kan communiceren.
Echter, zodra ik 'm op de server gooi krijg ik de volgende melding:
Het lijkt erop alsof de server niet de juiste library pakt, dus heb ik geprobeerd een andere library ervan te maken na de standaard reboots e.d. Helaas wil dit ook niet werken.
Heeft iemand enig idee wat ik mis doe? Ik loop er al een tijdje mee rond en op de één of andere manier werkt het niet zoals ik het in m'n hoofd heb.
In het vorige ontwerp was alles in de library static zodat het makkelijk aangeroepen kon worden en je geen constructors hoefde te gebruiken maar dit gaf interferentie tussen twee servers aangezien dan de servernamen dubbel voorkwamen (wat vrij logisch is, vandaar hopelijk deze work-around).
Hopelijk kan iemand 't zien! ...En hopelijk heb ik voldoende info gegeven
Ik zit al een tijdje met een probleem waar ik nog geen oplossing voor heb verzonnen. Het is als volgt:
Wij hebben op onze Middleware data staan die naar ons SAP-backend moet. Dit doen we door functies in SAP aan te roepen met de SapJCo library. Deze functies roepen we aan, geven een import/export-parameter (of meerdere) mee en daarmee gaat SAP aan de haal met de gegevens die wij aangeven.
Niets nieuws voor ons en zeker niets zwaars. Nu gaan we echter over op meerdere servers naar meerdere SAP-servers, waarbij ook nog meerdere users gebruikt moeten gaan worden voor de verbindingen. Op deze manier kunnen we in SAP goed onderscheid maken tussen de verschillende functies en waar de calls vandaan komen of waar de listeners voor functies vanuit SAP staan en welke specifieke bij welke functie hoort.
Nu het technische gedeelte. Wat ik probeer te doen is het maken van een library die verschillende instanties van de "EaiSAPServer" kan maken. Deze instanties zorgen ervoor dat we via verschillende wegen contact kunnen leggen met SAP en we data over kunnen gooien.
In mijn library heb ik het volgende (vereenvoudigd):
Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
| public class EaiSAPServer { private static JCoServer serverEaiSap = null; public static String serverName = ""; public EaiSAPServer(String serverName) { EaiSAPServer.serverName = serverName; readProperties(); try { serverEaiSap = JCoServerFactory.getServer(serverName); } catch (Exception e) { logger.logEai(e.getStackTrace(), errorCode, serverName, "Server could not be found or initialized by EaiSAPServer library", "Server does not exist or could not be made"); } } ...<rest code>... } |
Ik roep deze code aan met het volgende:
Java:
1
2
3
4
5
6
| public class E3ListenerServices { private static EaiSAPServer eaiSapServer = new EaiSAPServer("EaiSAPServer"); //Blijkbaar de defecte code ...<rest code>... } |
Bij het aanroepen van de code lokaal gaat het helemaal goed en kan ik meerdere servers instantieren vanuit verschillende classes zonder problemen. De servers werken en kunnen listeners toegevoegd krijgen zodat alles kan communiceren.
Echter, zodra ik 'm op de server gooi krijg ik de volgende melding:
code:
1
2
3
4
| Exception: java.lang.Error: Unresolved compilation problem: The constructor EaiSAPServer(String) is undefined at com.hs.eai.sap.e3.E3ListenerServices.<init>(E3ListenerServices.java:9) |
Het lijkt erop alsof de server niet de juiste library pakt, dus heb ik geprobeerd een andere library ervan te maken na de standaard reboots e.d. Helaas wil dit ook niet werken.
Heeft iemand enig idee wat ik mis doe? Ik loop er al een tijdje mee rond en op de één of andere manier werkt het niet zoals ik het in m'n hoofd heb.
In het vorige ontwerp was alles in de library static zodat het makkelijk aangeroepen kon worden en je geen constructors hoefde te gebruiken maar dit gaf interferentie tussen twee servers aangezien dan de servernamen dubbel voorkwamen (wat vrij logisch is, vandaar hopelijk deze work-around).
Hopelijk kan iemand 't zien! ...En hopelijk heb ik voldoende info gegeven