Tag: 回调

将java函数注册为C函数中的回调函数

我试图使用SWIG 1.3在Java中实现一些C代码。 现在我必须将一些现有的C重建为Java代码,并为C方法提供指向Java函数的函数指针。 C代码:net.c: void register_message_handler( context_t *ctx, message_handler_t handler) { context->msg_handler = (void (*)( void *, coap_queue_t *, void *)) handler; } client.c: void message_handler(context_t *ctx, queue_t *node, void *data) { … } int main(int argc, char **argv) { // setup ctx register_message_handler( ctx, message_handler ); } 我在Java中已经拥有的是: public static void message_handler(def.SWIGTYPE_p_context_t ctx, def.SWIGTYPE_p_queue_t […]

使用JNA进行C回调会导致JRE崩溃

我在JNA中处理回调时遇到问题。 我正在尝试使用一个使用回调来处理多个会话事件的C API(登录,注销,连接问题……)。 会话对象(称为sp_session )是一个不透明的结构。 所有回调都在sp_session_callbacks结构中注册。 根据API,我应该声明回调对象,并将其放入我将在创建sp_session对象时提供的sp_session对象中。 如果我不想使用某些回调,我应该用null初始化它们。 API使用__stdcall调用约定。 这是与我的问题相关的C标题的片段: #define SP_CALLCONV __stdcall typedef struct sp_session sp_session; ///< Representation of a session typedef enum sp_error { SP_ERROR_OK = 0, SP_ERROR_BAD_API_VERSION = 1, /* More errors */ } sp_error; typedef struct sp_session_callbacks { /** * Called when login has been processed and was successful */ void […]

如何避免回调中的内存泄漏?

有效的Java说: 内存泄漏的第三个常见来源是侦听器和其他回调。 如果您实现客户端注册回调但未明确注销回调的API,则除非您采取某些操作,否则它们将累积。 确保回调被及时垃圾回收的最佳方法是仅存储对它们的弱引用,例如,通过仅将它们存储为WeakHashMap中的键。 我是Java的初学者。 有人可以教我如何在回调中创建弱引用并告诉我它们如何解决内存泄漏问题? 谢谢。

什么是java中的回调方法? 术语似乎松散使用

我不明白回调方法是什么,我听说人们非常松散地使用这个术语。 在java世界中,什么是回调方法? 如果有人可以提供带有解释的java回调方法的示例代码,那么在我的java学习之旅中它会有很大的帮助吗? 先谢谢你。

SOAP Web服务回调架构?

我对Web服务,JAX-WS等都很陌生,所以也许没有问题…… 所以,我想实现一个Web服务来使两个系统进行通信。 “客户端”系统对在“服务器”系统上生成的事件感兴趣。 但“客户端系统”本​​身就是一个不同应用程序的服务器。 服务器是Java(tomcat中的WAR)。 客户端是.Net。 应该只有一个客户端系统,但客户端系统中有几个客户端进程,每个客户端进程都对不同类别的事件感兴趣。 我将实现服务器端和测试客户端。 其他人将实现.Net代码。 运行顺序应该沿着这一行: 服务器正在运行…… 客户端启动对话,“注册”到服务器,并请求一些初始数据。 服务器保留已注册客户端的端点列表 在服务器中,有一个监听器在某些事件发生时得到通知。 然后,它将浏览已注册客户的列表,并将事件转发给每个客户 在某些时候,客户端可以“取消注册”不通知服务器它不再想要接收事件。 首先,它听起来像是合理可行吗? 是否有一个标准的内置机制,使用SOAP(服务器上的JAX-WS,无论客户端的.Net是什么) – 服务器可以用来从客户端获取回调端点? 例如,我使用RMI做了一些非常相似的事情,在这种情况下,客户端可以只向自己发送远程引用,服务器可以稍后存储ant引用。 最后,是否有一个标准库来存储端点引用,make(集体)回调,并且可能使列表保持最新,删除那些没有响应的客户端,以便进行一些“ping”调用? 注意清楚:我需要的不仅仅是带回调的异步方法:来自客户端的一条消息将从服务器到客户端生成许多回调消息。

使用Interface在JNI中实现回调函数

我需要使用“interface”在Java中实现回调函数。 我已经将应用程序部分编写为MyJavaFunction(int size, m_GetSizeInterface); m_GetSizeInterface是一个包含回调函数GetSize的接口。 此GetSize方法在应用程序中被覆盖。 在JNI中,我需要调用一个具有原型int MyCPPFunction(int size, int (*callback)(int* ID));的CPP函数int MyCPPFunction(int size, int (*callback)(int* ID)); 如何将此GetSize作为参数传递给JNI中的MyCPPFunction? 请帮忙 public int GetSize (m_SizeClass arg0) { g_size = arg0.size; return 0; }

JNI – 如何从C ++或C回调到Java?

我有Java应用程序调用本机C ++ / C代码。 C ++ / C代码需要回调到Java。 你能给我一些如何做到这一点的例子。