Pregunta

Quiero llamar a un servlet desde J2ME Midlet, por lo que he escrito el código HTTPConnection para la URL de Servlet para llamar a GET.

Cuando Midlet Suites intenta conectarse a la URL del servlet, tengo el siguiente mensaje en el emulador,

{#MyMidlet} Midlet Suite wants to connect to {#Servlet URL} using air time,
  this may result in charges, Is it ok to use airtime ?

Si hago clic en No o Sí, no pasó nada, se acaba de ahorrar, estoy usando Eclipseme y Sun WTK 2.5.2.Y en la consola hubo una advertencia,

Warning: To avoid potential deadlock, operations that may block, such as 
 networking, should be performed in a different thread than the 
 commandAction() handler.

¿Qué significa, si hago la httpconnection en un hilo separado, ¿se resolverá el problema?

¿Fue útil?

Solución

Si hago la httpconnection en un hilo separado, ¿se resolverá el problema?

Si lo hace bien, sí, el problema será resuelto. Este es un problema típico y hay una solución de Standatd.

ADVERTENCIA Usted se refiere a Indica el problema de diseño en su MIDLET. Tiene actividad de "peso pesado" (conexión HTTP) que se ejecuta en el mismo hilo que UI, bloqueándolo y haciéndolo irresponsable.

Evite la carga pesada en el hilo de evento de UI. Cuando hay mucho que hacer de algo dentro de commandAction o keyPressed o pointerPressed, etc., simplemente engendra un nuevo hilo para hacerlo. Para comprender mejor, ¿por qué es eso, considere estudiar este tutorial para averiguar cómo hacerlo bien:

redes, experiencia de usuario y hilos

Este artículo explica cómo su MIDLET puede hacer conexiones de red sin comprometer su interfaz de usuario. Incluye seis ejemplos iterativos que ilustran las redes multiprocesas y el uso de una pantalla de espera ...

  • Después del primer ejemplo en el tutorial (PrimitiveMidlet), incluso hay una explicación detallada del problema que está experimentando:

    ... El programador ha secuestrado un hilo del sistema para su propio procesamiento prolongado. El sistema llama a su método de comandas () cuando el usuario selecciona un comando. El hilo que llama a este método pertenece al sistema, no al desarrollador. Esto no sería un delito si el método ejecutado rápidamente, pero en este caso, la conexión de red puede acostar el hilo del sistema durante mucho tiempo.

    En la programación de aplicaciones J2SE e incluso en la programación de servlet, el sistema crea un hilo para usted y hay pocas restricciones sobre cuánto tiempo puede tomar su procesamiento. La regla del rosca MIDLET es simple y estricta: los únicos hilos que pertenecen a usted son los que usted cree.

    En un MIDLET, está escribiendo un código que el sistema llamará de uno de sus propios hilos. Cuando se convierte en los métodos de startapp (), pausapp (), destruya () y los métodos de controlador de eventos, por ejemplo, se ejecutan dentro de un hilo del sistema. Sus métodos deben volver rápidamente para que el hilo del sistema pueda continuar con su otro trabajo. Cualquier tarea que no se puede completar rápidamente debe moverse fuera del hilo del sistema.

    Este estilo de programación puede tomar algunos que se acostumbran, ya que realmente solo está escribiendo código que se llama desde los hilos del sistema. Sin embargo, si ha hecho alguna otra programación GUI, esta técnica será familiar. AWT y Swing tienen un hilo de despacho de eventos que maneja eventos del sistema operativo y llama a los manipuladores de eventos en su código. La regla es la misma: los manipuladores de eventos deben ejecutar rápidamente y devolver el control a la rosca de despacho de eventos para que el resto de la interfaz no se bloquee ... Otros ejemplos de código en tutorial muestran cómo solucionar errores de diseño como arriba y cómo hacer que la interfaz de usuario midlet intervierta suavemente con las actividades de redes.

Otros consejos

crea su conexión como un hilo separado como este:

Thread myConnection = new Thread(new Runnable() {

        public void run() {
            // TODO open connection here


            HttpConnection conn = null;

            try {

                        conn = (HttpConnection) Connector.open(serverURL,
                                Connector.READ_WRITE, true);

                        conn.setRequestMethod(HttpConnection.GET); // or POST method

                    } catch (Exception e) {

                // TODO: handle exception

            } finally {

                // close connection here
            }

        }
    });
    myConnection.start();


en J2ME La operación de la red se coloca en hilo separado.
U Coloque el módulo de red en un hilo separado. Si coloca el módulo de red en hilo separado, no aparece el siguiente mensaje.

Warning: To avoid potential deadlock, operations that may block, such as 
 networking, should be performed in a different thread than the 
 commandAction() handler.

De lo contrario, no lo permitirá.
Las siguientes son las siguientes que se encuentra a la API en ese mismo lugar en que los escenarios se encuentran la API de FileConnection (lectura / escritura en el archivo), httpconnection, httpsconnection, etc.
U Revisa tu dispositivo Si es compatible con el certificado auto firmado. Si es compatible significa que use el certificado auto firmado.
El certificado de la fiesta de confianza es costoso. Su costo mínimo es ruppees 10000 por año. Los siguientes son algunos proveedores de la parte de confianza, Thawte, Verizon, Semantec, etc.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top