Google AppEngine java.net.Socket - ограниченная ошибка - PullRequest
3 голосов
/ 17 декабря 2011

Я использую Quercus / PHP на AppEngine.Когда я запускаю простой скрипт с file_get_contents($url);, я получаю сообщение об ошибке:

java.lang.NoClassDefFoundError: java.net.Socket является классом с ограниченным доступом.Подробнее см. В руководстве разработчика Google App Engine.

Я погуглил, и хотя я обнаружил, что другие столкнулись с той же ошибкой, но причина, по-видимому, различна.Как вы думаете, что скрывает эту ошибку для меня?

Я использую последний AppEngine Java SDK и последний Quercus.

Ответы [ 4 ]

2 голосов
/ 17 декабря 2011

При использовании Google AppEngine / Java у вас нет доступа к полной JVM: ваши приложения работают в изолированной песочнице.См. Документацию здесь:

https://developers.google.com/appengine/docs/java/runtime?hl=en#The_Sandbox

Согласно этой документации, вы не можете открыть сокет в этой песочнице.Вот почему написано, что «java.net.Socket - ограниченный класс».

2 голосов
/ 18 декабря 2011

olivierlemasle прав, но вот решение, которое я нашел после еще нескольких поисков; в разделе комментариев пользователь "Фил" рекомендует :

import java.net.URL;
define('URLFetchServiceFactory', new Java('com.google.appengine.api.urlfetch.URLFetchServiceFactory'));
$data = URLFetchServiceFactory->getURLFetchService()->fetch(new URL($url))->getContent();

Протестировано, и все заработало!

1 голос
/ 04 октября 2012

Поддержка App Engine для java.net.Socket начинает разворачиваться на 1.7.2 с отправкой доверенных тестировщиков.

Будут некоторые ограничения, но он должен поддерживать большинство применений.

Регистрация здесь: https://docs.google.com/a/google.com/spreadsheet/viewform?formkey=dF9QR3pnQ2pNa0dqalViSTZoenVkcHc6MQ#gid=0

Это было популярно, поэтому будет включена только часть.

0 голосов
/ 17 декабря 2011

Согласно домашней странице вашего API (http://quercus.caucho.com/) он может использовать спящий режим. Быстрое поиск в Google дал мне это: GWT и Hibernate - NoClassDefFoundError при использовании Hibernate

Там написано, что hibernate не будет работать с движком приложения Google. Может быть, это ответ.

...