0

J2ME アプリを作成し、別のアプリに jar として追加しました。元のアプリは最大の権限で実行され、正常に動作しますが、2 つ目のアプリに 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)
4

2 に答える 2

2

Jonathan Knudsen が"Understanding MIDP 2.0's Security Architecture"で述べているように:

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.datagramreceiver
  • javax.microedition.io.Connector.comm
  • javax.microedition.io.PushRegistry

上記の API を使用している場合、.Jar ファイルは適切な署名証明書で署名する必要があります。

アクセス許可に関する詳細な概要については、上記の記事を確認してください。

このような証明書は、たとえばVerisignから購入できます。

于 2012-02-17T09:56:12.967 に答える
1

誰かに役立つ場合に備えて、ソリューションを投稿します。

問題はエミュレータにありました。J2ME SDK 3.0 を使用したとき、DefaultCldcPhone1 で問題なく動作しました。

于 2012-02-27T09:41:26.757 に答える