Ошибка развертывания проекта JCo на SCP
Я пытаюсь подключить RFC к динамическому веб-проекту в Eclipse. Проект будет развернут на SCP, и я добавил пункт назначения на SCP следующим образом:
Проект содержит сервлет, который выполняет приведенный ниже код, и эти две комбинированные прекрасно работают.
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException
{
PrintWriter responseWriter = response.getWriter();
try
{
JCoDestination destination = JCoDestinationManager.getDestination("jcodemo");
JCoRepository repo = destination.getRepository();
JCoFunction rfcConnection = repo.getFunction("ZRFM_GET_EQUIPMENTS");
rfcConnection.execute(destination);
responseWriter.println("<html><head>");
responseWriter.println("</head><body>");
responseWriter.println("<p>Test</p>");
responseWriter.println("</body></html>");
}
}
Я хочу изменить место назначения во время выполнения (чтобы пользователи могли использовать собственную учетную запись), поэтому я добавил DestinationDataProvider
, Он используется в нескольких руководствах, которые делают пользовательские места назначения. (Я оставил его пустым, чтобы сэкономить место, его функциональность здесь не имеет значения.)
public class DestProvider implements DestinationDataProvider {
@Override
public Properties getDestinationProperties(String arg0) throws DataProviderException {
// TODO Auto-generated method stub
return null;
}
@Override
public void setDestinationDataEventListener(DestinationDataEventListener arg0) {
// TODO Auto-generated method stub
}
@Override
public boolean supportsEvents() {
// TODO Auto-generated method stub
return false;
}
}
Чтобы Eclipse распознал импорт com.sap.conn.jco.ext.DestinationDataProvider
Я добавил SAPJCo3.jar в качестве ссылки на проект. Мне не нужно было импортировать до этой части.
Я добавил этот фрагмент кода в свой сервлет, чтобы создать его экземпляр. Когда я ссылаюсь на это в сервлете, веб-страница возвращает 500
ошибка.
DestProvider d = new DestProvider();
Я перепробовал все что угодно, но постоянно получаю сообщение об ошибке. Журналы Java-приложения также пусты, поэтому я не знаю, как продолжить это. Любая помощь будет оценена.
1 ответ
Вы не можете зарегистрировать свой собственный DestinationDataProvider в облачной платформе SAP.sapjco3.jar
является автономным SAP Java Connector и не подходит для использования / развертывания на SCP. Эта платформа уже поставляется со всеми необходимыми артефактами, включая специальную версию клиента JCo. Подключение RFC к локальным системам SAP достигается через туннель TLS к SAP Cloud Connector.
Может быть, это руководство поможет понять архитектуру и как использовать RFC JCo в облачной платформе SAP:
https://www.sap.com/germany/developer/tutorials/hcp-scc-onpremise-extension-jco-rfc.html
Для пользовательских назначений JCo вы должны иметь возможность использовать класс JCoCustomDestination, который позволит переключать учетные данные входа пользователя, но не изменять параметры входа, которые определяют целевую систему SAP.