2012-02-10 3 views
0

Я создал приложение J2ME и добавил его как банку в другое приложение. Исходное приложение работает с максимальным разрешением и прекрасно работает, но когда я добавляю его как jar во втором приложении, я получаю исключение безопасности при вызове веб-службы, и я заметил, что приложение работает с минимальной безопасностью.J2ME: Установить разрешение безопасности программно

Я добавил разрешения мидлета для http и https в JAD.

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

Ваше оригинальное приложение подписано? –

+0

нет, но второе приложение было создано в netbeans, и, как ни странно, он отлично работает, когда я добавляю банку, созданную в eclipse, и запускаю ее в netbeans, где, когда eclipse помещает эту ошибку. – Mal

ответ

1

Публикация решения в случае, если это кому-то поможет.

Проблема была с эмулятором. Когда я использовал J2ME SDK 3.0, с DefaultCldcPhone1 он работал нормально.

2

Как отмечает Джонатан Кнудсены в "Understanding MIDP 2.0's Security Architecture":

MIDP 2.0 спецификация определяет открытую систему разрешений. Для создания любого типа сетевого подключения необходимо, чтобы MIDlet имел соответствующее разрешение. Например, MIDlet, который использует HTTP для общения с сервером, должен иметь разрешение на открытие 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

Если вы используете выше API, то ваш файл .jar должен быть подписан с соответствующими сертификатами Знака.

Для получения более подробного обзора article mentioned above о разрешениях.

Вы можете купить такой сертификат, например, от Verisign.

+0

Да, я добавил все разрешения, но не подписал.Попробует получить сертификат, хотя мне все еще интересно, как он работает на netbeans, но когда я заново создал тот же проект в eclipse, он терпит неудачу. – Mal

+0

Возможно, возможно, что у ваших netbeans уже есть эти сертификаты. обратитесь за помощью к своему руководителю или руководителю проекта. – Android

+0

Если вы собираетесь скопировать слова кого-то еще, укажите правильную атрибуцию. Я сделал это здесь, но убедитесь, что вы сделаете это самостоятельно в будущем. –

Смежные вопросы