Моя конечная цель проста. Я создаю веб-сайт с тремя компонентами: мобильным интерфейсом, веб-интерфейсом администратора и веб-интерфейсом пользователя. Я планирую поместить каждый из этих модулей в отдельные файлы WAR и вместе с модулем EJB &, возможно, общим библиотечным модулем, объединить их все в EAR для развертывания на JBoss AS 7.1.Конфигурирование военного файла
Но во-первых, я могу развернуть очень простой файл WAR и заставить его работать - НЕТ!
Моя война файл имеет следующую структуру:
проект-mobile.war:
META-INF/MANIFEST.MF
WEB-INF/jboss-web.xml
WEB-INF/classes/org/dobbo/project/mobile/Accounts.class
index.html
manifest.mf файл в виде следующего содержания:
Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.0
Created-By: 1.6.0_18-b18 (Sun Microsystems Inc.)
Built-By: steve
JBoss-веб .xml:
<?xml version="1.0"?>
<jboss-web>
<context-root>/mobile</context-root>
</jboss-web>
Файл Accounts.java был основан на примере Library.java от https://docs.jboss.org/author/display/AS71/Java+API+for+RESTful+Web+Services+(JAX-RS) Я внес некоторые изменения, добавил подклассу Application и аннотацию AppicationPath, так как это немного помогло мне в развертывании.
package org.dobbo.<project>.mobile;
import javax.ws.rs.*;
import javax.ws.rs.core.Application;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@ApplicationPath("/accounts")
@Consumes({"application/xml"})
@Produces({"application/xml"})
public class Accounts
extends Application {
...
@GET
@Path("/list")
public Collection<UUID> getAccounts() {
Collection<UUID> list = uuids.values();
log.info("getAccounts: " + list);
return list;
}
...
}
Пока все хорошо.
Когда я раскрываю я получаю вход в консоль JBoss (метка времени & журнала уровень INFO удален):
[org.jboss.as.repository] (management-handler-thread - 12) JBAS014900: Content added at location /home/jboss/jboss-7.1.1/standalone/data/content/11/e8cdaea9dfa4e984ada3e22b0c890970f0ba75/content
[org.jboss.as.server.deployment] (MSC service thread 1-3) JBAS015877: Stopped deployment sokoban-mobile.war in 60ms
[org.jboss.as.server.deployment] (MSC service thread 1-1) JBAS015876: Starting deployment of "project-mobile.war"
[org.jboss.web] (MSC service thread 1-2) JBAS018210: Registering web context: /mobile
[org.jboss.as.server] (management-handler-thread - 12) JBAS018565: Replaced deployment "project-mobile.war" with deployment "project-mobile.war"
До сих пор все кажется хорошо. Но когда я указываю мой браузер на JBoss-сервера: 8080/мобильные/счета/список я получаю:
HTTP Status 404 - Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list
type Status report
message Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list
description The requested resource (Could not find resource for relative : /list of full path: http://jboss-server:8080/mobile/accounts/list) is not available.
Однако что-то работает, потому что указывает на Broswer на JBoss-сервера: 8080/мобильный/успешно возвращает index.html файл также включен в файл WAR.
Это, вероятно, просто простая ошибка конфигурации с моей стороны, но я не могу ее решить для жизни. Огромное спасибо всем, кто приложил все усилия, чтобы прочитать эту проблему и еще больше поблагодарить за публикацию любых ваших идей.
Стив
Многие благодарят Yous @ Kaxaag. Мне также пришлось сменить Consumes & Produces на «application/json», поскольку не было автора тела для «application/xml». Это то, что я могу исправить позже, или использовать json в качестве протокола передачи данных. – Dobbo
Кажется, они добавляют некоторую поддержку json для ресурса non jax-b. Если вы хотите автоматическое xml-маршалинг, возвращаемый объект должен быть классом jax-b annotate (http://docs.jboss.org/resteasy/docs/2.3.4.Final/userguide/html/Content_Marshalling_Providers.html) – Kazaag