cancel
Showing results for 
Search instead for 
Did you mean: 

How to connect Java Application in Cloud with on-premise Hana

Former Member
0 Kudos

Hello guys,

I have the following problem. I created a Java web application which communicate with our on-premise sap hana. I deployed the web app into my local Java web server and there a connection is established successfully. I deployed it into the cloud, but I am not sure how to set up the SCC.

I am sure that my "Mapping Virtual To Internal System" is correct, but what do I have to fill in in "Resources Accessible on xxxxx:30015"?

EDIT: I want to reach a DB on my on-premise HANA, let's say its name is "test".

Thank you for your help.

Best regards,

Raphael Prager

Error message:

com.sap.db.jdbc.exceptions.JDBCDriverException: SAP DBTech JDBC: Cannot connect to jdbc:sap://isrmssaphn1.isr.local:30015/ [Unknown host isrmssaphn1.isr.local:30015 [isrmssaphn1.isr.local], -709].

at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:230)

at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.createException(SQLExceptionSapDB.java:214)

at com.sap.db.jdbc.exceptions.SQLExceptionSapDB.generateDatabaseException(SQLExceptionSapDB.java:197)

at com.sap.db.jdbc.Driver.connect(Driver.java:218)

at java.sql.DriverManager.getConnection(DriverManager.java:571)

at java.sql.DriverManager.getConnection(DriverManager.java:215)

at de.isr.hanaconnect.web.Connector.doGet(Connector.java:45)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:735)

at javax.servlet.http.HttpServlet.service(HttpServlet.java:848)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at com.sap.core.communication.server.CertValidatorFilter.doFilter(CertValidatorFilter.java:324)

at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)

at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)

at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)

at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)

at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:505)

at com.sap.core.jpaas.security.auth.service.lib.AbstractAuthenticator.invoke(AbstractAuthenticator.java:205)

at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:170)

at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:957)

at com.sap.core.tenant.valve.TenantValidationValve.invokeNextValve(TenantValidationValve.java:217)

at com.sap.core.tenant.valve.TenantValidationValve.invoke(TenantValidationValve.java:96)

at com.sap.js.statistics.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:24)

at com.sap.core.js.monitoring.tomcat.valve.RequestTracingValve.invoke(RequestTracingValve.java:25)

at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)

at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)

at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:423)

at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1079)

at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:620)

at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:318)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)

at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)

at java.lang.Thread.run(Thread.java:812)

Accepted Solutions (1)

Accepted Solutions (1)

Ulrich_Schmidt
Product and Topic Expert
Product and Topic Expert

Hi Raphael,

in the direction "Cloud to On-Premise" the Cloud Connector allows only HTTP and RFC connections. So I would recommend the approach using a Business Connector in front of the HANA DB as described in this document:

http://scn.sap.com/docs/DOC-28581

What you would do is:

  1. Install SAP BC on the HANA box (or at least in the same network segment)
  2. Install a JDBC driver for HANA DB on the SAP BC
  3. Create a "Flow Service" on the BC for each SQL statement you want to execute. (This is instead of the "RFC Outbound Maps" described in the document.)
  4. Install the Cloud Connector on the SAP BC box and make the necessary access control settings so that the Flow Services from step 3 can be invoked from the Cloud.
  5. Add the NeoSAPBCAdapter.jar to your Cloud app and just execute the Flow Services from your Java code. You will get the DB result sets in form of a Java object com.wm.util.Table. No parsing of XML, Jason or other data formats necessary.

Best Regards, Ulrich

Answers (0)