1

로컬 데이터베이스를 사용하는 경우 MySQL을 말하면 시뮬레이터와 에뮬레이터에서 완벽하게 작동하지만 실제 장치에서는 localhost가 수행하지 않으므로 온라인 데이터베이스 호스팅을 시도했습니다.실제 장치에 대한 IBM Worklight SQL 어댑터

www.freemysqlhosting.net에서 온라인 호스팅을 사용할 때 제공된 ID와 암호를 사용하여 Eclipse에서 데이터베이스 개발 관점에서 데이터베이스를 설정 했으므로 시뮬레이터, 에뮬레이터 및 연결된 실제 장치에서 제대로 작동했습니다. 해당 데이터베이스가 설정된 시스템과 동일한 네트워크이지만 익명 장치의 경우 실패했습니다!

그럼 난 다시 시뮬레이터와 에뮬레이터와 함께 작동하지만 sqllite와 함께 시도했지만 실제 장치에 대한 그것은 UNRESPONSIVE_HOST 오류를 보여 주었다.

제 질문은 : 일부 데이터베이스를 사용하는 IBM Worklight를 사용하여 응용 프로그램을 개발하고 배포하려는 경우 어떻게해야합니까?

답변

0

장치와 Worklight 서버 간의 연결에 문제가 SQL 서버와 관련이 없습니다. 장치에서 Worklight 서버에 연결할 수 있어야합니다. 장치에서 브라우저를 열고 Worklight 콘솔을 가리키고 액세스 할 수 있는지 확인합니다.

+0

워크 라이트 서버가 앱 안에 내장되어 있습니다. 기기에서 워크 라이트 콘솔을 가리키는 방법을 알려주세요. localhost 또는 다른 ip는 모바일 장치에서 지원되지 않습니다! – Ric

+0

Worklight 서버에서 Worklight 어댑터에 연결할 수 없다면 SQL 예외가 발생할 수 있습니까? 예외는 분명히 org.apache.commons.dbcp.SQLNestedException입니다. – djna

+0

@Ric - Run As -> Build Settings 및 Deploy Target 옵션을 사용하여 다른 서버 주소를 지정하면 localhost를 사용하지 않는 것이 옳습니다. 나는 그것이 SQL 예외를 생성 할 수있는 방법을 보지 못했기 때문에 여기에 몇 가지 오류가있을 수 있습니다. – djna

1

그것은 것이되어 훨씬 훨씬 더 도움이 방금 로그 캣에서 오류 로그 ...

안드로이드를 사용

, 그것은 대신에 사용하는 실제 IP localhost를 사용하지하는 것이 좋습니다를 제공하려는 경우 주소. 이 질문보기 : IBM Worklight - Unable to connect to database when using IP address instead of localhost

MySQL은 다른 서버와 같은 서버입니다. 개인 로컬 네트워크 외부에서 사용하려면 공용 인터넷에서 들어오는 연결로 열면됩니다. 이는 개발자가 소란스럽게 다루는 것이 아니라 IT 부서가 필요로하는 것입니다. So google and see how to open your network.

+0

내 에뮬레이터에서 잘 작동하므로 logcat의 로그가 도움이 될 것이라고 생각하지 않습니다. 실제 장치에서 SQL 어댑터에 대한 접근 방식을 지정할 수 있습니까? – Ric

+0

관리자에게 장치를 요청하고 로그를 게시하면 다소 시간이 걸릴 수 있습니다. :) – Ric

+0

다음은 오류 로그 (logcat가 아니라 프로 시저 호출 오류 로그)입니다 : "errors": [ " 런타임 : org.apache.commons.dbcp.SQLNestedException : PoolableConnectionFactory를 만들 수 없습니다 (통신 링크 오류가 발생했습니다. \ n \ n 서버에 마지막으로 보낸 패킷의 길이는 0 밀리 초 전이었습니다. 서버에서 패킷을받지 못했습니다.) " – Ric

1

장치에서 직접 데이터베이스에 액세스하려는 것처럼 들립니다. 그럴까요?

워크 라이트 어댑터를 사용하는 것이 좋습니다. 그래서 패턴은 간다 :

어댑터에 장치에서 점점에 대한 책임이 실제 장치 또는 에뮬레이트 된 하나의 여부에 의해 완전히 영향을받지 않습니다 따라서 작업등으로 거짓말과 그 패턴에서
App on Device ---> Adapter ---> Database 

, 또한 독립적이어야한다 어떤 데이터베이스를 사용하고 있습니까?

어댑터에서 데이터베이스로의 홉핑은 아무데도 배포하지 않고도 설정하고 테스트 할 수있는 무언가입니다. Eclipse에서 테스트 환경을 사용하여 어댑터 메소드를 호출하십시오.

왜 장치에서 데이터베이스로 직접 이동하지 않습니까? 일반적으로 이것은 매우 나쁜 보안 패턴입니다. 여러분은 관심있는 데이터를 매우 해킹이 가능한 장소에 효과적으로 배치 할 수 있습니다. 또한 많은 수의 사용자에게 잘 맞지 않습니다. 즉, 장치에서 직접 연결한다는 것은 모든 사용자가 효과적으로 자체 연결을한다는 것을 의미합니다. 어댑터 사용자는 제어 가능한 연결 수를 공유합니다.

+0

실제로 SQL 어댑터를 사용 중이며 "오류": [ "런타임 : org.apache.commons.dbcp.SQLNestedException : PoolableConnectionFactory를 만들 수 없습니다 (통신 링크 오류가 발생했습니다.) \ n \ n 서버에 마지막으로 보내진 패킷이 0 밀리 초 전이었습니다 드라이버가 서버에서 패킷을받지 못했습니다.) " – Ric

+0

어댑터를 사용하고 있다면 어댑터에 대한 요청의 시작이 어댑터가 데이터베이스에 연결할 수 있는지 여부와 관련이없는 이유를 알 수 없습니다. 모든 경우에 똑같은 서버 인스턴스를 사용하고 있습니까? – djna

관련 문제