2013-08-21 2 views
1

Я использую Restlet Framework, но теперь я хочу перейти на правильный сервер вместо использования localhost. Я уже добавил свои php-файлы (они обращаются к java-файлам с использованием URL-адреса rest_server) в папку сервера и мои java-файлы, но я не уверен, как изменить код, чтобы он определял, где новое расположение файлов является.Использование внешнего сервера restlet framework

Вот код из IdentiscopeServer (конструктор пустым):

public static void main(String[] args) throws Exception { 

    //setsup our security manager 
    if (System.getSecurityManager() == null){ 
     System.setSecurityManager(new SecurityManager()); 
    } 

    identiscopeServerApp = new IdentiscopeServerApplication(); 

    IdentiscopeServer server = new IdentiscopeServer(); 
    server.getServers().add(Protocol.HTTP,8888); 
    server.getDefaultHost().attach("", identiscopeServerApp); 
    server.start(); 

} 

Я думаю, что правильная линия, чтобы изменить это один с «Protocol.HTTP, 8888». Если адрес моего нового сервера http://devweb2013.co.uk/research/Identiscope, как именно я это настрою? Есть ли что-то еще, что необходимо для того, чтобы он работал отдельно от простого перемещения файлов в папку на сервере?

IdensticopeServerApplication является следующее:

public class IdentiscopeServerApplication extends Application { 

public IdentiscopeServerApplication() { 
} 

public Restlet createInboundRoot() { 
    Router router = new Router(getContext()); 

    //attaches the /tweet path to the TweetRest class 
    router.attach("/collectionPublic", CollectionPublicREST.class); 
    router.attach("/collectionPrivate", CollectionPrivateREST.class); 
    router.attach("/analysis", AnalysisREST.class); 
    return router; 
} 
} 

Спасибо заранее, это мой первый раз с помощью этого Framework.

+0

Трудно предоставить помощь, не зная о классах IdentiscopeServerApplication & IdentiscopeServer –

+0

Простите об этом. Обновлено сообщение, см. Выше. –

+0

Я хочу видеть код этих классов, потому что я считаю, что существует все остальная логика подключения к сервису. Код, который вы предоставили в своем вопросе, находится на очень абстрактном уровне. –

ответ

1

Если я правильно вас понимаю, вы просто хотите запустить свой метод main() в качестве сервера, правильно? В этом случае код для main() должен находиться в месте, которое при запуске может предоставить услугу по адресу http://devweb2013.co.uk/research/Identiscope. Поскольку вы не указали, какой сервер вы помещаете в код, я не могу сказать, где лучше всего разместить код. Я предполагаю, что у вас есть привилегии суперпользователя на вашем сервере развертывания, поскольку указанный вами URL означает, что порт 80 будет обслуживать ваш веб-сервис Identiscope (порт 80 является привилегированным портом на большинстве ОС). Поэтому в качестве ответа я могу предоставить только общую информацию.

На вашем сервере развертывания порт 80 должен быть бесплатным (т. Е. Ничто другое не должно выступать в роли веб-сервера на порту 80 на этом компьютере), а IdentiscopeApplication должен работать на порту 80. Для этого вам нужно только изменить линия:

server.getServers().add(Protocol.HTTP,8888); 

к:

server.getServers().add(Protocol.HTTP, 80); 

затем запустить приложение в качестве пользователя, которому разрешено запускать сервера на порт 80 (предпочтительно не суперпользователя). Если вы еще этого не сделали, вам нужно будет запустить Java на сервере развертывания и убедиться, что все библиотеки Restlet находятся в пути к классам, где вы планируете запускать приложение.

Если я понимаю, что вы пытаетесь сделать, тогда это должно сделать трюк.

+0

Snapman, Большое спасибо за ваш ответ.В последнее время у меня были проблемы с сервером, но как только я проверю, что вы предложили, я опубликую здесь, если это сработает или нет. Благодаря! –

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