問題タブ [jco]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - sapjco を使用して SAP BAPI に接続する 2 つの Web アプリケーション
RHEL6 (x64) 用の WebSphere Application Server 8.5 に 2 つの Web アプリケーションをデプロイしています。どちらの Web アプリケーションも SAPJCO ライブラリを使用して、SAP ECC6 にデプロイされた BAPI に接続します。購入リクエストを作成するには、両方のアプリケーションが同じ BAPI にアクセスする必要があります。そのため、SAP の CustomDestinationDataProvider から変更された同じコードを使用して接続します。アプリケーションが一度だけ登録するようにするために、Spring を使用してシングルトンにします。
ただし、アプリケーションが開始されると、1 つのアプリケーション (最初のアプリケーションの後にロードされると推測されます)が実行される"java.lang.IllegalStateException: DestinationDataProvider already registered"
ときに遭遇します。"com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(myProvider)"
CustomDestinationDataProvider は次のとおりです。
And the error from SystemOut.log in WebSphere is as follow:
[6/30/14 22:29:15:198 ICT] 00000043 webapp E com.ibm.ws.webcontainer.webapp.WebApp notifyServletContextCreated SRVE0283E: Exception caught while initializing context: {0}
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'jdoConnector' defined in ServletContext resource [/WEB-INF/applicationContext-BAPI.xml]: Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.sps.tmps.bean.bapi.JCOConnector]: Constructor threw exception; nested exception is java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [com.sps.tmps.bean.bapi.JCOConnector]: Constructor threw exception; nested exception is java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
Caused by: java.lang.Error: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
at com.sps.tmps.bean.bapi.CustomDestinationDataProvider.initProvider(CustomDestinationDataProvider.java:174)
at com.sps.tmps.bean.bapi.JCOConnector.(JCOConnector.java:41)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:56)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:39)
at java.lang.reflect.Constructor.newInstance(Constructor.java:527)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:186)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:800)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:720)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:387)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:251)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:156)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:248)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:287)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.web.context.ContextLoader.createWebApplicationContext(ContextLoader.java:244)
at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:187)
at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:49)
at com.ibm.ws.webcontainer.webapp.WebApp.notifyServletContextCreated(WebApp.java:1678)
at com.ibm.ws.webcontainer.webapp.WebAppImpl.initialize(WebAppImpl.java:414)
at com.ibm.ws.webcontainer.webapp.WebGroupImpl.addWebApplication(WebGroupImpl.java:88)
at com.ibm.ws.webcontainer.VirtualHostImpl.addWebApplication(VirtualHostImpl.java:169)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApp(WSWebContainer.java:749)
at com.ibm.ws.webcontainer.WSWebContainer.addWebApplication(WSWebContainer.java:634)
at com.ibm.ws.webcontainer.component.WebContainerImpl.install(WebContainerImpl.java:426)
at com.ibm.ws.webcontainer.component.WebContainerImpl.start(WebContainerImpl.java:718)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:1175)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.fireDeployedObjectStart(DeployedApplicationImpl.java:1370)
at com.ibm.ws.runtime.component.DeployedModuleImpl.start(DeployedModuleImpl.java:639)
at com.ibm.ws.runtime.component.DeployedApplicationImpl.start(DeployedApplicationImpl.java:968) at com.ibm.ws.runtime.component.ApplicationMgrImpl.startApplication(ApplicationMgrImpl.java:774)
at com.ibm.ws.runtime.component.ApplicationMgrImpl.start(ApplicationMgrImpl.java:2182)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:445)
at com.ibm.ws.runtime.component.CompositionUnitImpl.start(CompositionUnitImpl.java:123)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.start(CompositionUnitMgrImpl.java:388)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl.access$500(CompositionUnitMgrImpl.java:116)
at com.ibm.ws.runtime.component.CompositionUnitMgrImpl$CUInitializer.run(CompositionUnitMgrImpl.java:994)
at com.ibm.wsspi.runtime.component.WsComponentImpl$_AsynchInitializer.run(WsComponentImpl.java:502)
at com.ibm.ws.util.ThreadPool$Worker.run(ThreadPool.java:1862)
Caused by: java.lang.IllegalStateException: DestinationDataProvider already registered [com.sps.tmps.bean.bapi.CustomDestinationDataProvider$MyDestinationDataProvider]
at com.sap.conn.jco.rt.RuntimeEnvironment.setDestinationDataProvider(RuntimeEnvironment.java:134)
at com.sap.conn.jco.ext.Environment.registerDestinationDataProvider(Environment.java:259)
at com.sps.tmps.bean.bapi.CustomDestinationDataProvider.initProvider(CustomDestinationDataProvider.java:156)
... 41 more
私の質問は次のとおりです
。1) 2 つのアプリケーションで同じ CustomDestinationDataProvider を使用できるようにする方法は?
2) 2 つのアプリケーションが同じプロバイダーを使用できない場合、同じサーバー/ユーザー/クライアント番号を使用して同じ BAPI にアクセスするにはどうすればよいですか?
この場合の制約は、(1) sapjco を使用する必要があること、および (2) BAPI 関数のみを使用することです。customDestinationDataProvider は、問題があると思われる場合は破棄できます。ところで、長いコードとひどい書式設定で申し訳ありませんでした。
ありがとうございました。
java - Java は、Jco を介して複数の SAP システムに接続します
私は現在、SAP からいくつかのデータを読み取る必要がある小さな Java アプリケーションを開発しています。ほとんどすべてが正常に機能しています。SAP に接続でき、BAPI を呼び出して結果を取得でき、指定された結果を処理することもできます。しかし....
2 つの異なる SAP システム (システム A とシステム B) があります。
アプリケーションを起動してシステム A に接続すると、すべて問題ありません。しかし、システム A からのすべてのデータが処理された後、システム B を呼び出したいと思います (アプリケーションを停止/再起動せずに)。この状況では、システム B に接続できません。
SAP システムへの接続を確立する部分に何か問題があるに違いないと思います。
誰かがこれを正しく行う方法を教えてもらえますか?
これは私のコードです:
これが接続を確立する方法です (SapLogOn と SapSystem は、必要なパラメーターのラッパー クラスのみです)。
パート 2 は次のとおりです。
Java 6 と JCo3 を使用しています。
よろしくLStrike
java - JCO を介した SAP テーブルへのアクセス
現在、SAP JCO を使用して SAP に接続し、SAP テーブルからデータを取得しています。内部 BAPI 関数を使用して、SAP テーブルからデータを取得しています。テーブル名とデータを取得する列を指定するだけで、SAP テーブルからデータを取得する方法を知りたいです。
以下は、BAPI 関数を介してデータを取得するために使用するコードです。
テーブル名と列だけを指定して SAP テーブルにアクセスする方法についてのヘルプは大歓迎です。前もって感謝します
sap - JCO3 と JCO2 は Solaris で共存できますか?
SAP Java コネクタ JCO3 lib と JCO2 lib は、Solaris/Apache/Tomcat サーバーに共存できますか? 既存のJCO2アプリに手を加えずに、JCO3を新しいアプリに使えないかと考えています。
java - 32 ビット Windows で SAP jco 3.0.11 を使用すると、「java.lang.UnsatisfiedLinkError: no sapjco3 in java.library.path」エラーが発生する
32 ビット Windows XP OS で SAPJCO 3.0.11 jar を使用しているときに、以下のエラーが発生します。マーケットプレイスから 32 but SAPJCO jar をダウンロードしたときに、zip ライブラリに記載されている StepByStepClient の例を使用しています。ダウンロードした Jar には、32 ビット システム用の dll ファイルがありませんでした。不足しているものを教えてください。この問題を解決するのを手伝ってください。
以下はエラーです:
ありがとう、ロヒット
java - Java コードを使用して SAP から IDOC を読み取る
JCoidoc 3.0.11 lib を使用して SAP から Idoc を読み込もうとしていますが、いくつかの課題に直面しています。最初に BCE.jcoDestination と MYSERVER.jcoServer のパラメータを設定します。パラメータの意味を教えてください。可能であれば例を挙げてください。
第二に、SAP から idoc を読んで、それにどのようにアプローチしますか?
現在、IDocServerExample.java ファイルを使用して、SAPJCoidoc.zip の例を使用しています。
jco - sapjco 3.x での JCoFunction の移行
JCO2.x から 3.x に移行しています。コードはほぼ全部書き直しましたが、これでは動けません。
元の 2.x コード:
私の提案したコード:
問題は、3.x では JCoFunction をこの形式でインスタンス化できないことです。関数テンプレートを作成する必要がありますか? ヒントをありがとう。