문제

J2ME MIDlet에서 서블릿을 호출하고 싶습니다. 그래서 Servlet URL에 대한 HttpConnection 코드가 GET 메소드를 호출합니다.

MIDlet Suites가 서블릿 URL에 연결하려고하면 아래의 메시지가 있습니다.

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

NO 또는 YES를 클릭하면 아무 일도 일어나지 않으며 방금 교수형을 받았습니다. 나는 ECLIPSEME과 SUN WTK 2.5.2를 사용하고 있습니다.콘솔에서 경고가있었습니다.

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

은 별도의 스레드에서 httpConnection을 만드는 경우 문제가 해결됩니까?

도움이 되었습니까?

해결책

별도의 스레드에서 httpConnection을 수행하면 문제가 해결됩니까?

당신이 그것을 올바르게한다면, 예, 문제가 해결 될 것입니다. 이것은 전형적인 문제이며 대제 솔루션이 있습니다.

경고 MIDlet의 디자인 문제를 나타냅니다. ui와 동일한 스레드에서 실행되는 "헤비급"활동 (HTTP 연결)이 있으므로 차단하고이를 무책임하게 만듭니다.

UI 이벤트 스레드에서 무거운로드를 피하십시오. commandAction 또는 keyPressed 또는 pointerPressed 등 안의 무언가를 많이 수행 할 때 새로운 스레드를 생성하기 위해 새로운 스레드를 생성합니다. 이유를 더 잘 이해하기 위해이 자습서를 공부하는 방법을 고려해보십시오.

네트워킹, 사용자 경험 및 스레드

이 기사에서는 사용자 인터페이스를 손상시키지 않고 MIDlet이 네트워크 연결을 수행 할 수있는 방법을 설명합니다. 멀티 스레드 네트워킹 및 대기 화면의 사용을 보여주는 6 개의 반복 예제가 포함되어 있습니다 ...

  • 튜토리얼 (PrimitiveMidlet)에서 첫 번째 예제가 끝난 후에도

    문제에 대한 자세한 설명조차도 있습니다.

    ... 프로그래머는 자신의 오랜 가공을 위해 시스템 스레드를 납치했습니다. 사용자가 명령을 선택할 때 시스템이 자신의 CommandAction () 메소드를 호출합니다. 이 메서드를 호출하는 스레드는 개발자가 아닌 시스템에 속합니다. 이 방법이 신속하게 실행되는 경우 범죄는 아닙니다. 그러나이 경우 네트워크 연결은 시스템의 스레드를 오랫동안 숨길 수 있습니다.

    J2SE 응용 프로그램 프로그래밍 및 서블릿 프로그래밍에서도 시스템은 스레드를 만들고 처리가 얼마나 오래 걸릴 수 있는지에 대한 제한이 거의 없습니다. MIDlet 스레딩의 규칙은 간단하고 엄격합니다 : 당신에게 속한 유일한 스레드는 자신이 만드는 것들입니다.

    MIDlet에서는 시스템이 자체 스레드 중 하나에서 호출하는 코드를 작성합니다. MIDlet의 StartApp (), PauseApp (), DestroyApp () 및 이벤트 핸들러 메서드가 호출되면 시스템 스레드 내부에서 실행됩니다. 시스템 스레드가 다른 작업을 계속할 수 있도록 메소드가 빠르게 반환되어야합니다. 완료 될 수없는 모든 작업을 시스템의 스레드에서 빠르게 이동해야합니다.

    이 스타일의 프로그래밍은 시스템 스레드에서 호출되는 코드 만 작성하는 것처럼 익숙해지는 데 익숙해 질 수 있습니다. 그러나 다른 GUI 프로그래밍을 수행 한 경우이 기술은 익숙합니다. AWT 및 Swing에는 운영 체제 이벤트를 처리하고 코드에서 이벤트 처리기를 호출하는 이벤트 디스패치 스레드가 있습니다. 규칙은 동일합니다. 이벤트 핸들러는 나머지 인터페이스가 잠길 수 없도록 이벤트 핸들러가 이벤트 디스패치 스레드로 신속하게 실행되어야합니다 ... 자습서에서의 추가 코드 예제 위의 디자인 실수를 수정하는 방법과 Midlet 사용자 인터페이스를 원활하게 네트워킹 활동에 부드럽게 상호 운용하는 방법을 보여줍니다.

다른 팁

이와 같이 별도의 스레드로 연결을 만듭니다.

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();
.


J2ME에서 네트워크 작업은 별도의 스레드에 저장됩니다.
U 네트워킹 모듈을 별도의 스레드에 넣습니다. U 네트워킹 모듈을 별도의 스레드에 넣으면 다음 메시지가 나타나지 않았습니다.

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

J2ME (J2ME 소유자 인 Sun / Oracle)는 몇 가지 제한 사항을 제공합니다. 보안 일부 API가 신뢰할 수있는 당사자가 필요합니다.이 모바일은 사용자를 클릭하면 사용자에게 권한을 요청합니다. 그렇습니다.그렇지 않으면 허용되지 않습니다.
다음은 해당 시나리오에서 일부 API가 제공됩니다 (파일 읽기 / 쓰기) API, httpConnection, HttpSconnection 등.
UR 장치가 지원되는지 여부를 확인하십시오. 자체 서명 인증서를 지원합니다. 지원은 자체 서명 인증서를 사용하는 것을 의미합니다.
신뢰할 수있는 파티 인증서는 값 비싼 것입니다. 최소한의 비용은 연간 ruppees 10000입니다. 다음은 몇 가지 신뢰할 수있는 파티 벤커입니다. verizon, semantec 등

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top