我正在尝试将RFC连接到Eclipse中的动态Web项目。该项目将部署到SCP,我在SCP上添加了这样的目的地:
该项目包含一个Servlet,该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
。用于创建自定义目的地的多个指南中使用了它。 (我将其留空以节省空间,此处的功能无关紧要。)
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中引用的内容,该网页返回了500
错误。
DestProvider d = new DestProvider();
我已经尝试过各种方法,但是我总是遇到错误。 Java应用程序的日志也为空,因此我不知道如何继续进行操作。任何帮助将不胜感激。
答案 0 :(得分:1)
您无法在SAP Cloud Platform上注册自己的DestinationDataProvider。
sapjco3.jar
是独立的SAP Java连接器,不适合在SCP上使用/部署。该平台已经带有所有必要的工件,包括特殊的JCo客户端版本。通过到SAP Cloud Connector的TLS隧道实现与本地SAP系统的RFC连接。
也许本教程有助于理解体系结构以及如何在SAP Cloud Platform上使用JCo RFC:
https://www.sap.com/germany/developer/tutorials/hcp-scc-onpremise-extension-jco-rfc.html
对于自定义JCo目标,您应该能够使用类JCoCustomDestination,该类将允许切换用户登录凭据,但不能更改定义目标SAP系统的登录参数。