私は2つの重要なコードを持っています:-最初の1つはPythonで、-もう1つはバイナリdos exeです(これをまったく書き直すことはできません。Javaクラスにラップしましたが、動作しています)
私は Java を接着剤として使用しており、Jython を使用して Python コードを組み込んでいます。これらすべての部分の機能コードもあります。スタンドアロンとして Eclipse ですべて正常に動作します。
実際には、書き換え(バイナリでは不可能)やPython部分の埋め込みを避けたいと思います。それは独自のSoap Serviceなどです.
そして、他の将来のライブラリが含まれているため、私はJavaに固執しています!
現在、Tomcat サーバーで Axis2 経由で Soap サービスを使用している最中に、「サービス メソッドを呼び出そうとしているときに例外が発生しました」というエラーが表示されます。
"ImportError: No module named mypymodule"によって読み取られる"import" -ed python モジュールへのパスを示す方法に欠けているものがあると思います(このモジュールは存在し、Java クラスから使用すると正しく動作します)エクリプス)
私が追加しました
PythonInterpreter interpreter = new PythonInterpreter(null, new PySystemState());
PySystemState sys = Py.getSystemState();
sys.path.append(new PyString("C:/jython2.5.2/Lib"));
sys.path.append(new PyString("d:/path/to/mypymodule")); // of course this is actually a realpath in my code
しかし、それはうまくいきません。
また、Tomcat/Axis2 に一種のセキュリティ上の問題がないか、または他のディレクトリへのアクセスを禁止する権限管理がないかどうかについても悩んでいますか?
また、この「mypymodule」は Java Factory Jython パターンにラップされたものではなく、実際に Java でラップされたこの最初のモジュールによってインポートされた別の外部の純粋な python モジュールであることにも注意してください。
何かアドバイスはありますか?
よろしくお願いします、
(そして、バイナリ呼び出しに関する他のいくつかの将来の意見の相違が予想されます)
True に変更した後の完全なスタック トレース sendStacktraceDetailsWithFaults
<parameter name="sendStacktraceDetailsWithFaults">true</parameter>
以下です
<soapenv:Fault>
<soapenv:Code>
<soapenv:Value>soapenv:Receiver</soapenv:Value>
</soapenv:Code>
<soapenv:Reason>
<soapenv:Text xml:lang="en-US">Exception occurred while trying to invoke service method oWPL</soapenv:Text>
</soapenv:Reason>
<soapenv:Detail>
<Exception>org.apache.axis2.AxisFault: Exception occurred while trying to invoke service method oneWordPerLine1
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:208)
at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)
at org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
at org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:169)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:999)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:565)
at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:307)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:722)
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.apache.axis2.rpc.receivers.RPCUtil.invokeServiceClass(RPCUtil.java:212)
at org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:117)
... 23 more
Caused by: Traceback (most recent call last):
File "<string>", line 1, in <module>
ImportError: No module named mypymodule
at org.python.core.Py.ImportError(Py.java:290)
at org.python.core.imp.import_first(imp.java:750)
at org.python.core.imp.import_name(imp.java:834)
at org.python.core.imp.importName(imp.java:884)
at org.python.core.ImportFunction.__call__(__builtin__.java:1220)
at org.python.core.PyObject.__call__(PyObject.java:357)
at org.python.core.__builtin__.__import__(__builtin__.java:1173)
at org.python.core.imp.importFromAs(imp.java:978)
at org.python.core.imp.importFrom(imp.java:954)
at org.python.pycode._pyx0.f$0(<string>:1)
at org.python.pycode._pyx0.call_function(<string>)
at org.python.core.PyTableCode.call(PyTableCode.java:165)
at org.python.core.PyCode.call(PyCode.java:18)
at org.python.core.Py.runCode(Py.java:1261)
at org.python.core.Py.exec(Py.java:1305)
at org.python.util.PythonInterpreter.exec(PythonInterpreter.java:206)
at pyinterface.MyUtils.oWPL(MyUtils.java:127)
at pyinterface.MyUtils.oWPL(MyUtils.java:152)
... 29 more</Exception>
</soapenv:Detail>
</soapenv:Fault>