Java me J2ME:以编程方式设置安全权限

Java me J2ME:以编程方式设置安全权限,java-me,midp,ksoap,Java Me,Midp,Ksoap,我创建了一个J2ME应用程序,并将其作为jar添加到另一个应用程序中。最初的应用程序以最大权限运行,工作正常,但当我在第二个应用程序中将其添加为jar时,我在进行web服务调用时遇到了安全异常,我注意到该应用程序以最低安全性运行 我也在JAD中添加了http和https的midlet权限 javax.microedition.io.Connector.http, javax.microedition.io.Connector.https 你知道怎么解决这个问题吗?我得到的错误如下: java.

我创建了一个J2ME应用程序,并将其作为jar添加到另一个应用程序中。最初的应用程序以最大权限运行,工作正常,但当我在第二个应用程序中将其添加为jar时,我在进行web服务调用时遇到了安全异常,我注意到该应用程序以最低安全性运行

我也在JAD中添加了http和https的midlet权限

javax.microedition.io.Connector.http, javax.microedition.io.Connector.https
你知道怎么解决这个问题吗?我得到的错误如下:

java.lang.SecurityException:应用程序无权访问受限API
在com.sun.midp.security.SecurityToken.checkForPermission(+459)
访问com.sun.midp.security.SecurityToken.checkForPermission(+15)
在com.sun.midp.midletsuite.MIDletSuiteImpl.checkForPermission(+20)
在com.sun.midp.dev.DevMIDletSuiteImpl.checkForPermission(+28)
在com.sun.midp.dev.DevMIDletSuiteImpl.checkForPermission(+7)
位于com.sun.midp.io.ConnectionBaseAdapter.checkForPermission(+67)
com.sun.midp.io.j2me.http.Protocol.checkForPermission(+17)
位于com.sun.midp.io.ConnectionBaseAdapter.openPrim(+6)
位于javax.microedition.io.Connector.openPrim(+299)
在javax.microedition.io.Connector.open(+15)
位于org.ksoap2.transport.ServiceConnectionMidp.(+11)
位于org.ksoap2.transport.HttpTransport.getServiceConnection(+11)
访问org.ksoap2.transport.HttpTransport.call(+51)
在com.vxceed.xnappexpresssync.comm.WebserviceCall.call(+28)
在com.vxceed.xnappexpresssync.comm.WebserviceCall.callServiceMethod(+112)上
位于com.vxceed.xnappexpresssync.utility.Generic.sendRequest(+22)
在com.vxceed.xnappexpresssync.main.Authentication.authenticateUser(+77)上
在app.ui.ServerSync.sendServerRequest(+127)
在app.ui.LoginScreen.authenticateUser(+9)
在app.ui.LoginScreen.isLoginValidate(+76)
在app.ui.LoginScreen.key处按下(+48)
在app.ui.MainAppScreen$Clean.run(+33)
在java.util.TimerThread.mainLoop(+237)
在java.util.TimerThread.run(+4)

正如Jonathan Knudsen在中所述:

MIDP2.0规范定义了一个开放式的 权限。要进行任何类型的网络连接,必须使用MIDlet 获得适当的许可。例如,使用HTTP的MIDlet 要与服务器对话,必须具有打开HTTP连接的权限。 MIDP 2.0中定义的权限对应于网络协议, 但该体系结构允许可选API定义自己的API 权限

每个权限都有一个唯一的名称;MIDP 2.0权限包括:

  • javax.microedition.io.Connector.http
  • javax.microedition.io.Connector.socket
  • javax.microedition.io.Connector.https
  • javax.microedition.io.Connector.ssl
  • javax.microedition.io.Connector.datagram
  • javax.microedition.io.Connector.serversocket
  • javax.microedition.io.Connector.datagramreceiver
  • javax.microedition.io.Connector.comm
  • javax.microedition.io.PushRegistry
如果您正在使用上述API,则必须使用正确的签名证书对.Jar文件进行签名

有关权限的更多详细概述,请查看


例如,您可以从以下地址购买此类证书。

,Jonathan Knudsen在中指出:

MIDP2.0规范定义了一个开放式的 权限。要进行任何类型的网络连接,必须使用MIDlet 获得适当的许可。例如,使用HTTP的MIDlet 要与服务器对话,必须具有打开HTTP连接的权限。 MIDP 2.0中定义的权限对应于网络协议, 但该体系结构允许可选API定义自己的API 权限

每个权限都有一个唯一的名称;MIDP 2.0权限包括:

  • javax.microedition.io.Connector.http
  • javax.microedition.io.Connector.socket
  • javax.microedition.io.Connector.https
  • javax.microedition.io.Connector.ssl
  • javax.microedition.io.Connector.datagram
  • javax.microedition.io.Connector.serversocket
  • javax.microedition.io.Connector.datagramreceiver
  • javax.microedition.io.Connector.comm
  • javax.microedition.io.PushRegistry
如果您正在使用上述API,则必须使用正确的签名证书对.Jar文件进行签名

有关权限的更多详细概述,请查看


例如,您可以从购买此类证书。

发布解决方案,以防对某人有所帮助


问题出在模拟器上。当我使用J2MESDK3.0时,使用DefaultCldcPhone1它工作得很好

发布解决方案以防对某人有所帮助


问题出在模拟器上。当我使用J2MESDK3.0时,使用DefaultCldcPhone1它工作得很好

不,但是第二个应用程序是在netbeans中创建的,奇怪的是,当我添加在eclipse中创建的jar并在netbeans中运行它时,它工作得很好,正如eclipse显示的那样。不,但是第二个应用程序是在netbeans中创建的,奇怪的是,当我添加在eclipse中创建的jar并在netbeans中运行它时,它工作得很好,其中,eclipse显示了此错误。是的,我已添加了所有权限,但尚未签名。我将尝试获取证书,尽管我仍然想知道它在netbeans上是如何工作的,但是当我在eclipse中重新创建同一个项目时,它失败了。请向您的团队领导或项目经理咨询。如果您打算抄袭其他人的话,请提供适当的归因。我已经在这里这样做了,但请确保以后您自己这样做。是的,我已经添加了所有权限,但尚未签名。我将尝试获取证书,尽管我仍然想知道它在netbeans上是如何工作的,但是当我在eclipse中重新创建同一个项目时,它失败了。向你的团队领导或项目经理索取。如果你想抄袭别人的话,请
java.lang.SecurityException: Application not authorized to access the restricted API
  at com.sun.midp.security.SecurityToken.checkForPermission(+459)
  at com.sun.midp.security.SecurityToken.checkForPermission(+15)
  at com.sun.midp.midletsuite.MIDletSuiteImpl.checkForPermission(+20)
  at com.sun.midp.dev.DevMIDletSuiteImpl.checkForPermission(+28)
  at com.sun.midp.dev.DevMIDletSuiteImpl.checkForPermission(+7)
  at com.sun.midp.io.ConnectionBaseAdapter.checkForPermission(+67)
  at com.sun.midp.io.j2me.http.Protocol.checkForPermission(+17)
  at com.sun.midp.io.ConnectionBaseAdapter.openPrim(+6)
  at javax.microedition.io.Connector.openPrim(+299)
  at javax.microedition.io.Connector.open(+15)
  at org.ksoap2.transport.ServiceConnectionMidp.<init>(+11)
  at org.ksoap2.transport.HttpTransport.getServiceConnection(+11)
  at org.ksoap2.transport.HttpTransport.call(+51)
  at com.vxceed.xnappexpresssync.comm.WebserviceCall.call(+28)
  at com.vxceed.xnappexpresssync.comm.WebserviceCall.callServiceMethod(+112)
  at com.vxceed.xnappexpresssync.utility.Generic.sendRequest(+22)
  at com.vxceed.xnappexpresssync.main.Authentication.authenticateUser(+77)
  at app.ui.ServerSync.sendServerRequest(+127)
  at app.ui.LoginScreen.authenticateUser(+9)
  at app.ui.LoginScreen.isLoginValidate(+76)
  at app.ui.LoginScreen.keyPressed(+48)
  at app.ui.MainAppScreen$Clean.run(+33)
  at java.util.TimerThread.mainLoop(+237)
  at java.util.TimerThread.run(+4)