问题标签 [rpc]
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.
exception - Word Automation InvalidCastException RPC / COM 异常
我正在开发文字自动化应用程序,但遇到了意外的 RPC/COM 转换异常的严重问题
[System.InvalidCastException: Nie można rzutować obiektu modelu COM typu 'System.__ComObject' na typ interfejsu 'Microsoft.Office.Interop.Word._Application'。Ta Operacja NiePowiodłaSićżpż威沃韦·莫德QueryInterface DLASkładnikaModelu Com Com C Com Com Com o IdentyFikatorze IID'{00020970-000000C46}'NiePowiodłoSięZPOWODUNASTęPUJİCOGŁęDU:Serwer RPC jestniedostępny。(Wyjątek od HRESULT: 0x800706BA)。]
从波兰语到英语的翻译:
无法将 System.__ComObject 转换为 Microsoft.Office.Interop.Word._Application。原因是 IID '{00020970-0000-0000-C000-000000000046}' 的 QueryInterface 失败 - RPC 服务器不可用 - 错误代码 HRESULT: 0x800706BA
这里是wordapp模块的简介:
初始化 - 用户登录后。
……
我使用的是 Activator.CreateInstance 而不是 app = new Application() - 这里是解释。
然后用户可以在 wordapp 模块中执行 2 个动作
a) 打印准备好的 docx 文档
b) 将 docx 转换为 mht
当用户注销时,我释放单词实例:
异常会在随机位置抛出 - 但最常见的位置是 app.Documents.Add 附近。在该异常之后,无法 app.Quit。看来这个词实例已经死了。
我在事件日志(应用程序范围)中找到了那个东西:
EventType offdiag12, P1 585d8a02-f370-4c04-85b6-fccad7e80459255ec053-6dbd-4a22-9e59-112a79de8c6a, P2 NIL, P3 NIL, P4 NIL, P5 NIL, P6 NIL, P7 NIL, P8 NIL, P9 NIL, P10 NIL。
我运行办公室诊断,它没有发现任何错误。
是否可以从系统中启用/查找更多错误信息?
这段代码在我的开发机器(vista)上运行得很好。该问题发生在客户机器上(通常是 winxp sp2/sp3)。
我的代码有错误还是什么?
我需要添加的唯一一件事。WordModule init/close/print 函数从主线程调用,savetomht 从 backgroundworkders 线程调用。
gwt - GWT 与 JPA
我正在尝试使用 GWT 1.5.3 构建数据库应用程序。我对我的对象使用 JPA 注释。似乎在托管模式下 GWT 的 RPC 工作正常。但是当我尝试使用 GWT-compiler 编译我的应用程序时,我收到如下错误:“无法解析导入 javax.persistence”、“无法将实体解析为类型”。我的项目路径中已经包含了 toplink-essentials.jar。我还需要什么设置来解决这个问题?
c - 没有存根的 C RPC
我有这个程序,我希望其他进程能够(通过 unix 套接字)调用函数。消息协议非常简单,函数名、函数签名和保存参数的缓冲区(char *)。
当我的程序中的一个模块想要允许访问某个函数时,它会向库注册名称和签名。我面临的问题是一旦请求进入就物理调用该函数。我查看了 RPC 和 java RMI 类库,但这些库需要我生成存根来包装调用。我正在开发的系统非常动态,我还必须与其他人的代码进行交互,而我无法修改这些代码。
所以基本上,一个函数可能看起来像:
现在我在图书馆注册:
当请求进来时,我会做一些错误检查,一旦有效我想调用该函数。所以我有变量:
如何使用 C 中的参数调用函数?
谢谢!
java - Java RPC 服务器框架
我正计划用 Java 编写一个 RPC 服务器。服务器需要接受传入的 RPC(可能通过 HTTP)并回答它们。相当基本的东西。不需要支持“长轮询”或“挂起”RPC,因此每个请求的线程模型应该是完全足够的。
如果我是用 Python 编写的,我可能会使用像 twisted 这样的框架。在 C 语言中,类似 glibc。在每种情况下,该框架都提供了处理 IO 的通用“选择循环”核心的实现,并调用处理它的更高级别的构造,最终导致我的应用程序被调用以处理诸如接收 RPC 之类的事件。
不过,我已经很久没有用 Java 写过任何实质性的东西了,所以我不知道这种事情的最新技术或建议的解决方案是什么。甚至可能有部分标准库我可以很容易地用来做这件事。因此我向 StackOverflow 提出问题:有哪些框架适合这样的任务?
请注意,尽管我可能将 HTTP 用于 RPC,但这绝不是 Web 应用程序——因此,Web 框架并不合适。
c++ - “调用失败,未执行”
我有一个使用 Microsoft RPC 进行进程间通信的程序。当调用带有 [in, string] 参数的方法时(MIDL 表示法):
调用它通常是成功的。但是如果参数字符串足够长(超过大约 300 万个字符),调用会失败并显示 RPC_S_CALL_FAILED_DNE(“远程过程调用失败并且没有执行。”)。这肯定取决于字符串的长度。如果字符串在限制范围内,相同条件下的相同调用始终成功,如果字符串较长,则始终失败。看起来限制也取决于系统或机器。
有没有人观察到这种行为以及可能的解决方案是什么(不缩短参数)?
c++ - 启动 RPC 服务器时出现“端点重复”
我的程序使用 Microsoft RPC 进行进程间通信。为了准备接收 RPC 调用,程序运行以下序列:
RpcServerUseProtseqEp(),然后
RpcServerRegisterIf(),然后
RPCServerListen()
该程序以上述顺序启动其 RPC 服务器,工作一段时间,然后终止,稍后可能由另一个程序重新启动。每次运行程序时,RpcServerUseProtseqEp() 的参数值集都是相同的。
当序列在重新启动后第一次运行时,它总是成功,但在随后的运行中 RpcServerUseProtseqEp() 返回 RPC_S_DUPLICATE_ENDPOINT (“端点是重复的。”)目前我只是忽略这个特定的错误代码并将其视为成功,然后所有其他原语通常工作正常。
使用 RpcServerUseProtseqEp() 的正确方法是什么?我应该进行任何清理以撤销注册的端点还是继续忽略 RPC_S_DUPLICATE_ENDPOINT 错误代码?
google-app-engine - Google Web Toolkit (GWT) + Google App Engine (GAE) + Detached Data Persistence
我想使用 GWT 和 GAE 开发一个需要数据持久性的网络应用程序。据我了解,我唯一(或至少到目前为止最方便的)数据持久性选项是 GAE 的 Datastore,它使用 JDO 或 JPA 注释对象。我还希望能够使用 GWT 远程过程调用 (RPC) 在客户端-服务器之间来回发送我的对象,因此我的对象必须能够“分离”。但是,GWT RPC 序列化无法处理分离的 JDO/JPA 对象,而且它似乎不会在不久的将来出现。
我的问题:对此最简单和最直接的解决方案是什么?能够通过服务器端持久性共享相同的对象客户端/服务器将非常方便。
编辑
我应该澄清一下,我仍然希望将 GWT RPC 与 GAE 的数据存储区一起使用。我只是在寻找可以让所有这些技术协同工作的最佳解决方案。
c++ - 在 Vista 上调用 RPC 调用时“不支持操作”
我的应用程序使用 Microsoft RPC 进行进程间通信。当两个进程在同一台机器上运行并且一个进程尝试调用声明为(IDL 表示法)的方法时:
此调用因 RPC_S_CANNOT_SUPPORT(“不支持请求的操作”)而失败,并且永远不会到达服务器端,并且永远不会调用所提供管道的 push()/pull() 原语。这仅在使用ncalrpc协议时才会在 Vista 上重现,否则不会。
我还在事件查看器日志中发现了以下内容:
应用程序(“此处的我的程序 exe 文件名”\service)(PID:344)正在使用此版本的 Windows 中不存在的 Windows 功能。如需获取应用程序的更新版本,请联系应用程序供应商。需要传达给应用程序供应商的技术信息是:“已在具有唯一标识符(此处为实际 UUID)的协议序列 ncalrpc 接口上调用了使用同步管道的 RPC 方法。此协议序列上同步管道的使用和支持此版本的 Windows 已弃用。有关弃用过程的信息,请参阅http://go.microsoft.com/fwlink/?LinkId=36415。用户操作联系应用程序供应商以获取应用程序的更新版本
消息文本中的链接重定向到可能不相关的页面。
除了更改协议序列或不使用管道之外,是否有解决此问题的方法?