Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript node.js和node java:这个java代码的等效node.js代码是什么?_Javascript_Java_Node.js_Node Java - Fatal编程技术网

Javascript node.js和node java:这个java代码的等效node.js代码是什么?

Javascript node.js和node java:这个java代码的等效node.js代码是什么?,javascript,java,node.js,node-java,Javascript,Java,Node.js,Node Java,我正在研究复制我们现在拥有的一些功能,但是使用node.js,但是我们当前的应用程序接口到一个公开Java API的产品,所以我也在研究使用node Java来实现该接口,但是我很难“翻译”一些我们必须“翻译”到node.js的Java接口代码 首先,我在尝试将以下代码转换为等效的node.js代码时遇到了问题: import javax.security.auth.Subject; import weblogic.security.principal.WLSUserImpl; . . Subj

我正在研究复制我们现在拥有的一些功能,但是使用node.js,但是我们当前的应用程序接口到一个公开Java API的产品,所以我也在研究使用node Java来实现该接口,但是我很难“翻译”一些我们必须“翻译”到node.js的Java接口代码

首先,我在尝试将以下代码转换为等效的node.js代码时遇到了问题:

import javax.security.auth.Subject;
import weblogic.security.principal.WLSUserImpl;
.
.
Subject subject = new Subject();
matchUsername = "foo";
subject.getPrincipals().add(new WLSUserImpl(matchUsername));
以下是我当前(非工作)的尝试:

下面是我尝试运行node.js应用程序时的错误输出,如果上面提到的那行没有注释:

About to do java.import()...
/apps/node-v6.6.0-linux-x64/node_modules/java/lib/nodeJavaBridge.js:227
  var clazz = java.findClassSync(name); // TODO: change to Class.forName when classloader issue is resolved.
               ^

Error: Could not create class weblogic.security.principal.WLSGroupImpl
java.lang.NoClassDefFoundError: weblogic/security/principal/WLSAbstractPrincipal$GetSignatureProperty
Caused by: java.lang.ClassNotFoundException: weblogic.security.principal.WLSAbstractPrincipal$GetSignatureProperty
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358)

at Error (native)
at Java.java.import (/apps/node-v6.6.0-linux-x64/node_modules/java/lib/nodeJavaBridge.js:227:20)
at Object.<anonymous> (/apps/node-v6.6.0-linux-x64/code/testOES.js:16:26)
at Module._compile (module.js:556:32)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
下面是我当前的代码,应该可以做到这一点:

var javaLangSystem = java.import('java.lang.System');
var MyFactoryImplClass = java.import('oracle.security.jps.openaz.pep.PepRequestFactoryImpl');

javaLangSystem.out.printlnSync("About to do java.newInstanceSync()...");
var newSubject = java.newInstanceSync('javax.security.auth.Subject');
var newWLSUserImplObject = java.newInstanceSync("weblogic.security.principal.WLSUserImpl","weblogic", false);
console.log("newWLSUserImplObject after newInstanceSync=[" + newWLSUserImplObject + "]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
javaLangSystem.out.printlnSync("Returned from java.newInstanceSync...");

javaLangSystem.out.printlnSync("About to do subject.getPrincipals().add()...");
var x1 = newSubject.getPrincipalsSync();
var builtSubject = x1.addSync(newWLSUserImplObject);
javaLangSystem.out.printlnSync("Returned from getPrincipals()i.add(), builtSubject=[" + builtSubject + "]");
console.log("builtSubject after add = [" + builtSubject + "]");
[抱歉,我知道有很多调试内容,而且都是同步的,但我只想让它做到“正确地”执行某些操作:(…]

无论如何,以下是输出:

[root@nodejs smtest8-java-PULL-NODEJS]# node testOES.js
About to do java.newInstanceSync()...
newWLSUserImplObject after newInstanceSync=[weblogic]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Returned from java.newInstanceSync...
About to do subject.getPrincipals().add()...
Returned from getPrincipals()i.add(), builtSubject=[true]
builtSubject after add = [true]
请注意,即使代码将主题设置为“weblogic”,但builtSubject中的结果似乎是“true”

另外,当代码中稍后使用builtSubject(未显示)调用另一个方法时,我得到:

About to do pepReqF1.newPepRequest()...
/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8-java-PULL-NODEJS/testOES.js:71
var pepReq1 = pepReqF1.newPepRequestSync(builtSubject, "GET" , "test/foo2/fooresource" , null)
                       ^

Error: Error running instance method
oracle.security.jps.openaz.pep.JpsPepException: JPS-08000: **Subject object true is not supported**.
        at oracle.security.jps.openaz.pep.SubjectObjMapper.mapToJpsObject(SubjectObjMapper.java:176)
        at oracle.security.jps.openaz.pep.PepRequestImpl.setAccessSubject(PepRequestImpl.java:429)
        at oracle.security.jps.openaz.pep.PepRequestFactoryImpl.newPepRequest(PepRequestFactoryImpl.java:248)
        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:606)

    at Error (native)
    at Object.<anonymous> (/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8-java-PULL-NODEJS/testOES.js:71:24)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.runMain (module.js:590:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)
即将执行pepReqF1.newPepRequest()。。。
/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8 java PULL NODEJS/testOES.js:71
var pepReq1=pepReqF1.newPepRequestSync(buildsubject,“GET”,“test/foo2/foorsource”,null)
^
错误:运行实例方法时出错
oracle.security.jps.openaz.pep.JpsPepException:jps-08000:*不支持Subject-object true**。
位于oracle.security.jps.openaz.pep.SubjectObjMapper.mapToJpsObject(SubjectObjMapper.java:176)
位于oracle.security.jps.openaz.pep.PepRequestImpl.setAccessSubject(PepRequestImpl.java:429)
位于oracle.security.jps.openaz.pep.PepRequestFactoryImpl.newPepRequest(PepRequestFactoryImpl.java:248)
在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处
在sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)中
在sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)中
位于java.lang.reflect.Method.invoke(Method.java:606)
错误(本机)
at对象。(/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8 java PULL NODEJS/testOES.js:71:24)
在模块处编译(Module.js:556:32)
在Object.Module._extensions..js(Module.js:565:10)
在Module.load(Module.js:473:32)
在TryModule加载时(module.js:432:12)
在Function.Module.\u加载(Module.js:424:3)
位于Module.runMain(Module.js:590:10)
运行时(bootstrap_node.js:394:7)
启动时(bootstrap_node.js:149:9)
换句话说,填充builtSubject对象的代码部分没有抛出错误,但builtSubject中的结果似乎是错误的(值为“true”,而不是用户名“weblogic”)

我无法弄清楚“true”值来自何处,或者为什么未填充builtSubject:(

编辑3:顺便说一句,我想我真的很接近使用COTS API进行初始测试。我想我上面显示的日志向我显示node.js+node java实际上正在调用API,但是我正在为用户集(在builtSubject中)传递什么到API中不正确。因此,我认为如果我/我们能够找出builtSubject对象被错误填充的原因,我认为这至少可以证明我可以使用node.js+node java的API。然后,我可以调整代码,例如,可能使其异步,等等

所以我真的希望有人能发现我做错了什么:)

谢谢,
吉姆,你找到答案了吗?
[root@nodejs smtest8-java-PULL-NODEJS]# node testOES.js
About to do java.newInstanceSync()...
newWLSUserImplObject after newInstanceSync=[weblogic]+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Returned from java.newInstanceSync...
About to do subject.getPrincipals().add()...
Returned from getPrincipals()i.add(), builtSubject=[true]
builtSubject after add = [true]
About to do pepReqF1.newPepRequest()...
/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8-java-PULL-NODEJS/testOES.js:71
var pepReq1 = pepReqF1.newPepRequestSync(builtSubject, "GET" , "test/foo2/fooresource" , null)
                       ^

Error: Error running instance method
oracle.security.jps.openaz.pep.JpsPepException: JPS-08000: **Subject object true is not supported**.
        at oracle.security.jps.openaz.pep.SubjectObjMapper.mapToJpsObject(SubjectObjMapper.java:176)
        at oracle.security.jps.openaz.pep.PepRequestImpl.setAccessSubject(PepRequestImpl.java:429)
        at oracle.security.jps.openaz.pep.PepRequestFactoryImpl.newPepRequest(PepRequestFactoryImpl.java:248)
        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:606)

    at Error (native)
    at Object.<anonymous> (/apps/Oracle/OESCLIENT/oes_sm_instances/smtest8-java-PULL-NODEJS/testOES.js:71:24)
    at Module._compile (module.js:556:32)
    at Object.Module._extensions..js (module.js:565:10)
    at Module.load (module.js:473:32)
    at tryModuleLoad (module.js:432:12)
    at Function.Module._load (module.js:424:3)
    at Module.runMain (module.js:590:10)
    at run (bootstrap_node.js:394:7)
    at startup (bootstrap_node.js:149:9)