2012-02-10 8 views
0

私はJ2MEアプリケーションを作成し、別のアプリケーションでjarファイルとして追加しました。元のアプリケーションは最大の権限で動作し、うまく動作しますが、2番目のアプリケーションでjarファイルとして追加すると、Webサービスコールの作成中にセキュリティ例外が発生し、アプリケーションが最小限のセキュリティで動作していることがわかりました。J2ME:プログラムでセキュリティ権限を設定する

JADでもhttpとhttpsのmidlet権限を追加しました。

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

これを修正する方法はありますか。私が手にエラーは以下の通りです:"Understanding MIDP 2.0's Security Architecture"でジョナサン・クヌーセン状態として

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) 
+0

オリジナルのアプリが署名されていますか? –

+0

いいえ、2番目のアプリはnetbeansで作成され、不思議なことに、eclipseで作成されたjarを追加してnetbeansで実行するとうまくいきます。eclipseはこのエラーを起こします。 – Mal

答えて

1

誰かを助ける場合のためのソリューションの投稿。

エミュレータで問題が発生しました。私がJ2ME SDK 3.0を使用したとき、DefaultCldcPhone1で正常に動作しました。

2

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

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

許可の詳細については、article mentioned aboveを参照してください。

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

+0

はいすべての権限を追加しましたが、署名はしていません。私はそれがどのようにnetbeansで動作するのだろうが、証明書を取得しようとするだろうが、私はそれが失敗する日食で同じプロジェクトを再作成したとき。 – Mal

+0

あなたのネットビーンズには既にサインイン認証がある可能性があります。あなたのチームリーダーまたはプロジェクトマネージャーに問い合わせてください。 – Android

+0

他の人の言葉をコピーする場合は、適切な帰属をご記入ください。私はここでそれをしましたが、将来あなた自身でこれを確実に行うようにしてください。 –