Ошибка развертывания проекта 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.

Другие вопросы по тегам