CNode

node调用java程序做一些文件处理,怎样通信? JNI?

Sshinka发布于12 年前最后回复12 年前17 回复17684 浏览0 收藏

希望经验者能分享一下,node调用java程序处理文件怎么掉比较好。 同事告诉我JNI,查了半天没搞明白,node通过JNI跟java通信是怎么样的? 不是简单地起一个进程执行java指令吧?

查看回复

回复 (15)

B
bsspirit#1·12 年前

JNI是进程级的,JAVA通过JNI加载其他语言的二进制类库,反向不能实现。 Nodejs调JAVA,效率低,简单,可以走HTTP协议;效率高,略复杂,用Thrift ,走socket协议。

N
nihgwu#2·12 年前

如果java程序常驻,可以用ZeroMQ、RabbitMQ之类通信

T
tulayang#3·12 年前

数据库是c++写的,nodejs跟c++数据库是怎么通信的? 如果没有编码接口,就通过TCP。nodejs跟数据库正是这样做的。

-- 你可以用java写个服务器程序,监听端口 (正如c++写个数据库,监听端口) -- nodejs把客户端请求转发给java服务器 -- java服务器处理完毕,返回给nodejs响应 -- nodejs把结果再返回给客户端

S
shinka#4·12 年前

@lonso 见过这个模块,当时同事跟我说JNI我找了下没发现什么例子,这个也算个备选方案吧。3Q

S
shinka#6·12 年前
引用 nihgwu如果java程序常驻,可以用ZeroMQ、RabbitMQ之类通信

@nihgwu 这个有想过,以前也做过,不过这个方案中间多了个MQ,维护的cost稍微大了一点,也作为一个方案报告leader吧

S
shinka#7·12 年前
引用 bsspiritJNI是进程级的,JAVA通过JNI加载其他语言的二进制类库,反向不能实现。 Nodejs调JAVA,效率低,简单,可以走HTTP协议;效率高,略复杂,用Thrift ,走socket协议。

@bsspirit 直接http确实感觉效率略低呢。thrift没用过,昨天粗略看了下,没太看明白(也没太仔细看),今天再看看吧。3q

B
bnuhero#8·12 年前

调用Java程序:

  • 只需一次调用还是要多次交互?
  • Java应用的输入和输出是如何定义的?
S
shinka#9·12 年前
引用 bnuhero调用Java程序: + 只需一次调用还是要多次交互? + Java应用的输入和输出是如何定义的?

@bnuhero 多次调用,java主要是生成word文档保存,并返回一份word文档的html版本。有客户在页面上点击生成文档就调用

B
bnuhero#10·12 年前
引用 bnuhero调用Java程序: + 只需一次调用还是要多次交互? + Java应用的输入和输出是如何定义的?

@shinka

客户在页面上点击,调用Java应用时的输入是什么?

这个Java应用你有权限修改源代码么?

S
shinka#11·12 年前
引用 bnuhero调用Java程序: + 只需一次调用还是要多次交互? + Java应用的输入和输出是如何定义的?

@bnuhero 调用java的输出是一段字符串,里面是html内容。 现在打算用node 的java模块来实现了。

S
shinka#13·12 年前

@fantasyni hession? 不太懂了 查查去

N
nihgwu#14·12 年前
引用 nihgwu如果java程序常驻,可以用ZeroMQ、RabbitMQ之类通信

@shinka 如果说使用MQ进行进程间通信或者应用间通信增加了维护成本,我很想知道你们平时都是使用什么方案进行应用间通信的

S
shinka#15·12 年前
引用 nihgwu如果java程序常驻,可以用ZeroMQ、RabbitMQ之类通信

@nihgwu 一般有Node模块的就用Node模块,没有的有考虑用MQ,之前的版本用过rabbitMQ,后来找到了node的模块用那个代替了

参与回复
登录后即可参与回复。登录