2017-03-10 3 views
0

Google AppとSAPを接続して、SAPからデータを取得したいとします。Google App EngineでSAP Java Connectorが動作しない

単純なJavaアプリケーションでSAP Java Connectorを試してみましたが、うまくいきました。

しかし、Google Appで同じことをしようとすると例外が発生します。

は、ここに私のコードです:ここでは

public static final void getConnection() { 
    Properties connectProperties = new Properties(); 
    connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, SAP_IP); 
    connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR, "00"); 
    connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "350"); 
    connectProperties.setProperty(DestinationDataProvider.JCO_USER, SAP_USER_NAME); 
    connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, SAP_PASSWORD); 
    connectProperties.setProperty(DestinationDataProvider.JCO_LANG, "en"); 

    try { 
     JCoDestination destination = JCoDestinationManager.getDestination(SAP_DESTINATION); 
     System.out.println("Attributes:"); 
     System.out.println(destination.getAttributes()); 
     System.out.println(); 
     destination.ping(); 
    } catch (JCoException e) { 
     e.printStackTrace(); 
    } 
} 

SAP_DESTINATION、SAP_IP、SAP_USER_NAMEとSAP_PASSWORDは、それぞれの値を持つ文字列変数です。ここで

が、私はこののgetConnection()メソッドを呼び出したときにスローされる例外です:。

java.lang.ExceptionInInitializerError 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:191) 
at com.sap.conn.jco.rt.RuntimeEnvironment.getRuntimeImplementation(RuntimeEnvironment.java:475) 
at com.sap.conn.jco.rt.JCoRuntimeFactory.createRuntime(JCoRuntimeFactory.java:41) 
at com.sap.conn.jco.rt.JCoRuntimeFactory.<clinit>(JCoRuntimeFactory.java:22) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:191) 
at com.sap.conn.jco.JCo.createJCo(JCo.java:52) 
at com.sap.conn.jco.JCo.<clinit>(JCo.java:26) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:191) 
at com.google.appengine.tools.development.agent.runtime.RuntimeHelper.checkRestricted(RuntimeHelper.java:70) 
at com.google.appengine.tools.development.agent.runtime.Runtime.checkRestricted(Runtime.java:65) 
at com.sap.conn.jco.JCoDestinationManager.getDestination(JCoDestinationManager.java:104) 
at com.gulbrandsen.sap.SAPConn.getConnection(SAPConn.java:24) 
at com.gulbrandsen.sap.GAESAPServlet.doGet(GAESAPServlet.java:9) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) 
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:327) 
at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) 
at com.google.appengine.tools.development.StaticFileUtils.serveWelcomeFileAsForward(StaticFileUtils.java:82) 
at com.google.appengine.tools.development.LocalResourceFileServlet.maybeServeWelcomeFile(LocalResourceFileServlet.java:253) 
at com.google.appengine.tools.development.LocalResourceFileServlet.doGet(LocalResourceFileServlet.java:120) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:511) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.api.socket.dev.DevSocketFilter.doFilter(DevSocketFilter.java:74) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.ResponseRewriterFilter.doFilter(ResponseRewriterFilter.java:128) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:34) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:63) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:125) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectRequest(DevAppServerModulesFilter.java:366) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doDirectModuleRequest(DevAppServerModulesFilter.java:349) 
at com.google.appengine.tools.development.DevAppServerModulesFilter.doFilter(DevAppServerModulesFilter.java:116) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:98) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:512) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:923) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:547) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:212) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: java.security.AccessControlException: access denied ("java.lang.RuntimePermission" "modifyThreadGroup") 
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:372) 
at java.security.AccessController.checkPermission(AccessController.java:559) 
at java.lang.SecurityManager.checkPermission(SecurityManager.java:549) 
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:429) 
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkAccess(DevAppServerFactory.java:454) 
at java.lang.ThreadGroup.checkAccess(ThreadGroup.java:315) 
at java.lang.ThreadGroup.checkParentAccess(ThreadGroup.java:135) 
at java.lang.ThreadGroup.<init>(ThreadGroup.java:117) 
at java.lang.ThreadGroup.<init>(ThreadGroup.java:96) 
at com.sap.conn.jco.rt.JCoRuntime.<clinit>(JCoRuntime.java:125) 
... 74 more 

この同じコードは単純なJavaアプリで正常に動作しますが(Java用GoogleのSDKなし)

いずれかの確認をすることはできJCO jarがGoogle Appと互換性があるかどうか これはJCOまたはGoogleのSDKに問題がありますか?

またはいずれかが私にSAPにはGoogle Appを接続するための他の方法を提案することができます。(代わりに、JCOの)

答えて

0

をSAP Javaコネクタは、Javaのためのプラットフォームに依存しないAPIを提供していますが、それ自体がプラットフォームに依存しています。プラットフォーム依存のネイティブライブラリをロードする必要があります。 サポートされているJREおよびオペレーティングシステムの一覧については、SAPノート1077727を参照してください。

SAP Java Connectorは、SAPシステムとの通信にRFCプロトコルを使用します。代わりに、代わりにHTTP/HTTPSを使用することもできます。これについては、インターネット通信フレームワーク(ICF)とインターネット通信マネージャー(ICM)をご覧ください。多分このリンクは紹介として役立つでしょう:

https://help.sap.com/saphelp_qim100/helpdata/EN/48/641ea1bdbc51eee10000000a421937/frameset.htm

関連する問題