Was bedeutet 'Destination xxx is not available'

Rund um Java und SAP®.
5 Beiträge • Seite 1 von 1
5 Beiträge Seite 1 von 1

Was bedeutet 'Destination xxx is not available'

Beitrag von HenryKarn (ForumUser / 3 / 0 / 1 ) »
Ich habe in einem tomcat-Server (tomcat 9) ein Servlet erstellt, das mit jco 3 Daten an SAP übergibt.

Für den Aufbau der Connection habe ich einen eigenen CustomDestinationDataProvider implementiert.

Der Ablauf im Programm ist in etwa so:

Code: Alles auswählen.

myProvider.addDestination(...
JCoDestination connection = null;
try {
   connection = JCoDestinationManager.getDestination(...
   function = connection.getRepository().getFunction(...
   function.getImportParameterList().setValue(...
   function.execute(connection);
   // es folgen weitere Funktionsaufrufe
} catch (JCoException e) {
...
} finally {
   connection = null;
}
Die Anwender melden sich jeweils mit ihrer eigenen Userid in SAP an. Userid und Passwort werden vom Servlet eingelesen und bei der Erstellung der Destination mit angegeben. Für jeden User wird eine eigene Destination erstellt.

Während ich bei der Implementierung keine weiteren Probleme hatte, zumindest nachdem ich das Konzept mit dem DestinationdataProvider verstanden hatte, kam es beim Test durch die Anwender zu der folgenden Fehlermeldung :

Destination xxx could not be created: java.lang.RuntimeException: Destination xxx is not available

Kann mir bitte jemand sagen was damit gemeint ist und wie ich diesen Fehler beheben kann.

Bisher hat nur ein Neustart des Tomcat Abhilfe geschaffen. Das kann aber doch nicht die richtige Lösung sein.

Vielen Dank

gesponsert
Stellenangebote auf ABAPforum.com schalten
kostenfrei für Ausbildungsberufe und Werksstudenten


Re: Was bedeutet 'Destination xxx is not available'

Beitrag von a-dead-trousers (Top Expert / 4286 / 214 / 1142 ) »
Werden die "Destinationen" am SAP-System angelegt oder handelt es sich um ein davon unabhängiges Konzept im Tomcat?
Wenn Ersteres, dann scheint das ein Berechtigungsproblem zu sein, denn "normalen" Benutzern sollte es in SAP nie erlaubt sein, Destinationen anlegen zu dürfen. Das wäre ein viel zu großes Sicherheitsrisiko.
Theory is when you know something, but it doesn't work.
Practice is when something works, but you don't know why.
Programmers combine theory and practice: Nothing works and they don't know why.

ECC: 6.18
Basis: 7.50

Re: Was bedeutet 'Destination xxx is not available'

Beitrag von HenryKarn (ForumUser / 3 / 0 / 1 ) »
a-dead-trousers hat geschrieben:
12.08.2021 07:55
Werden die "Destinationen" am SAP-System angelegt oder handelt es sich um ein davon unabhängiges Konzept im Tomcat?
Wenn Ersteres, dann scheint das ein Berechtigungsproblem zu sein, denn "normalen" Benutzern sollte es in SAP nie erlaubt sein, Destinationen anlegen zu dürfen. Das wäre ein viel zu großes Sicherheitsrisiko.
Vielen Dank für die schnelle Reaktion.

Die Destinations werden nur im tomcat verwaltet. Der User gibt dem Servlet Userid und Passwort ein, die restlichen Parameter (system, mandant, ...) sind bekannt. Dann wird für diesen User eine Destination angelegt und mit dieser die Verbindung zum SAP-System aufgebaut.

Folgende Benutzer bedankten sich beim Autor HenryKarn für den Beitrag:
a-dead-trousers


Re: Was bedeutet 'Destination xxx is not available'

Beitrag von jocoder (Specialist / 339 / 3 / 101 ) »
Destination im JCo-Kontext (JCo-Destination) meint die Verbindungsdaten (Hostname, Mandant, Benutzer usw.) zum SAP-System. Damit ist keine Destination wie Sie im ABAP-Kontext verwendet wird aus der SM59 gemeint (@a-dead-trousers).

JCo-Destinationen müssen einmal vor Verwendung registriert werden (beispielsweise in der init-Method des Servlets).

Code: Alles auswählen.

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import com.sap.conn.jco.ext.Environment;

public class RfcServlet extends HttpServlet{

  @Override
  protected void init()throws ServletException{
    Environment.registerDestinationDataProvider(new  CustomDestinationDataProvider()).
  }
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{
     JCoDestination connection = null;
     try {
       connection = JCoDestinationManager.getDestination("Name");
       //...
    }
  }
}

Folgende Benutzer bedankten sich beim Autor jocoder für den Beitrag:
a-dead-trousers


Re: Was bedeutet 'Destination xxx is not available'

Beitrag von HenryKarn (ForumUser / 3 / 0 / 1 ) »
jocoder hat geschrieben:
12.08.2021 10:10
Destination im JCo-Kontext (JCo-Destination) meint die Verbindungsdaten (Hostname, Mandant, Benutzer usw.) zum SAP-System. Damit ist keine Destination wie Sie im ABAP-Kontext verwendet wird aus der SM59 gemeint (@a-dead-trousers).

JCo-Destinationen müssen einmal vor Verwendung registriert werden (beispielsweise in der init-Method des Servlets).

Code: Alles auswählen.

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import com.sap.conn.jco.ext.Environment;

public class RfcServlet extends HttpServlet{

  @Override
  protected void init()throws ServletException{
    Environment.registerDestinationDataProvider(new  CustomDestinationDataProvider()).
  }
  @Override
  protected void doGet(HttpServletRequest request, HttpServletResponse response)throws IOException, ServletException{
     JCoDestination connection = null;
     try {
       connection = JCoDestinationManager.getDestination("Name");
       //...
    }
  }
}
Ja, auch das habe ich in meiner init-Methode drin:

Code: Alles auswählen.

        if (!Environment.isDestinationDataProviderRegistered())
        {
            CustomSAPDestinationDataProvider.MyDestinationDataProvider myProvider = CustomSAPDestinationDataProvider.MyDestinationDataProvider.getInstance();
            Environment.registerDestinationDataProvider(myProvider);
        }
Ich habe 2 Dinge im Verdacht, woran das Problem liegen könnte:

Entweder habe ich mich mit den Parametern für das Pooling vertan.
Die habe ich einfach aus der Beispielanwendung übernommen:

Code: Alles auswählen.

        connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,"10");
        connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
oder muss man die Connection nach der Verwendung doch irgendwie abschließen.
Eine Methode hierzu habe ich nicht gefunden und setze daher die Variable auf null wenn ich sie nicht mehr benötige.

Seite 1 von 1

Vergleichbare Themen

5
Antw.
4132
Views
was bedeutet der *
von RiffRaff » 02.08.2004 14:01 • Verfasst in ABAP® Core
4
Antw.
6104
Views
was bedeutet =>
von bohne » 19.12.2006 20:38 • Verfasst in ABAP® für Anfänger
1
Antw.
1076
Views
was bedeutet *
von dimes » 07.07.2006 08:27 • Verfasst in ABAP® Core
1
Antw.
1359
Views
Was bedeutet die Fehlermeldung:...
von MASTERmind » 01.10.2007 14:57 • Verfasst in ABAP® Core
6
Antw.
932
Views
was bedeutet := zwischen 2 Variablen
von Der Formulator » 05.03.2021 19:16 • Verfasst in ABAP® für Anfänger

Newsletter Anmeldung

Keine Beiträge verpassen! Wöchentlich versenden wir lesenwerte Beiträge aus unserer Community.
Die letzte Ausgabe findest du hier.
Details zum Versandverfahren und zu Ihren Widerrufsmöglichkeiten findest du in unserer Datenschutzerklärung.