将 JCo 项目部署到 SCP 时出错

Error deploying JCo project to SCP

我正在尝试将 RFC 连接到 Eclipse 中的动态 Web 项目。该项目将部署到 SCP,我在 SCP 上添加了一个目的地,如下所示:

该项目包含一个执行以下代码的 Servlet,这两个组合工作正常。

        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。它用于制作自定义目的地的多个指南。 (我将其留空以节省一些 space,其功能在这里无关紧要。)

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 作为对项目的引用。在这部分之前我不需要导入。

我将这段代码添加到我的 Servlet 中以实例化一个。第二个我在 Servlet 中引用了这个,网页 returns 一个 500 错误。

DestProvider d = new DestProvider();

我尝试了各种方法,但总是出现错误。 Java 应用程序的日志也是空的,所以我不知道如何继续这个。任何帮助将不胜感激。

您不能在 SAP Cloud Platform 上注册自己的 DestinationDataProvider。 sapjco3.jar 是独立的 SAP Java 连接器,不适合作为 SCP 上的 used/deployed。这个平台已经附带了所有必要的工件,包括一个特殊的 JCo 客户端版本。与本地 SAP 系统的 RFC 连接是通过与 SAP 云连接器的 TLS 隧道实现的。

也许本教程有助于理解架构以及如何在 SAP Cloud Platform 上使用 JCo RFC:
https://www.sap.com/germany/developer/tutorials/hcp-scc-onpremise-extension-jco-rfc.html

对于自定义 JCo 目标,您应该能够使用 class JCoCustomDestination,这将允许切换用户登录凭据,但不能更改定义目标 SAP 系统的登录参数。