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



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

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

javax.microedition.io.Connector.http, javax.microedition.io.Connector.https

你知道怎么解决这个问题吗?我得到的错误如下:

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)

正如Jonathan Knudsen在"理解MIDP 2.0的安全体系结构"中所说:

MIDP 2.0规范定义了一个开放式系统权限。要进行任何类型的网络连接,MIDlet必须拥有适当的许可。例如,使用HTTP的MIDlet要与服务器对话,必须具有打开HTTP连接的权限。MIDP 2.0中定义的权限对应于网络协议,但是该体系结构允许可选的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.datagramsreceiver
  • javax.microedition.io.Connector.comm
  • javax.microedition.io.PushRegistry

如果您正在使用上述API,那么您的.Jar文件必须使用正确的签名证书进行签名。

查看上面提到的文章,了解有关权限的详细概述。

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

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

模拟器出现问题。当我使用J2ME SDK 3.0和DefaultCldcPhone1时,它运行得很好。

相关内容

  • 没有找到相关文章

最新更新