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;
}
Vielen Dank für die schnelle Reaktion.a-dead-trousers hat geschrieben: ↑12.08.2021 07:55Werden 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.
Folgende Benutzer bedankten sich beim Autor HenryKarn für den Beitrag:
a-dead-trousers
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
Ja, auch das habe ich in meiner init-Methode drin:jocoder hat geschrieben: ↑12.08.2021 10:10Destination 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"); //... } } }
Code: Alles auswählen.
if (!Environment.isDestinationDataProviderRegistered())
{
CustomSAPDestinationDataProvider.MyDestinationDataProvider myProvider = CustomSAPDestinationDataProvider.MyDestinationDataProvider.getInstance();
Environment.registerDestinationDataProvider(myProvider);
}
Code: Alles auswählen.
connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,"10");
connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");