jni调用的一些问题以及解决思考

C++中调用Java类,比如这个类是Test , Test中有一个方法叫做add

C++中直接可以调用到这个add,add方法中有在spring中管理的类对象,比如是callService,在方法add中调用callService返回为null

但是如果不是在C++调用这个注入,直接在java中调用这个Test.add 对应的callService是可以获取,是正常的

大家分析下,大概是什么原因,我估计C++调用了当前类的方法,但是在当前类中注入的对象,是获取不到的,有建议没?

后来我自己的总结:
上午我提的这个问题已经解决了,如果c++是可以直接调用的,只是当时我在spring中注入了不能直接拿到

下午我试了在C++调用的 方法中直接 getBean去拿spring管理的对象,然后再调用就ok了

如果一个对象在spring中,不重新拿一遍,C++调用这个函数时,是获取不到spring管理的对象的,必须重新从spring中获取一下,才能用

至于为什么直接拿不到,需要从spring中再getBean一下,这个问题我还没有搞清楚

虽然这个方案通了,不过准备换一个方案,用RPC和C++进行通信,C++如果以线程的方式依附于Java进程和JNI进行通信,这个C++线程如果崩了,Java进程是不知道

就会有问题,所以服务器端通信还是首选 RPC或者HTTP,都各自以进程的方式运行,而不是C++依附于Java进程

一个思路,仅供参考

你可能感兴趣的:(jni调用的一些问题以及解决思考)