Показаны сообщения с ярлыком jboss. Показать все сообщения
Показаны сообщения с ярлыком jboss. Показать все сообщения

вторник, 17 марта 2015 г.

Jboss Wildfly 8 HTTP response headers

Вопрос: как сконфигурировать web-сервер в jboss 8/9 для того, чтобы подставлять в ответы важные и нужные http-заголовки?
Конкретный пример: для обеспечения кросс-доменных запросов надо бы добавлять заголовок Access-Control-Allow-Origin. Ну, и до кучи ещё пару связанных (Access-Control-Allow-Methods, Access-Control-Allow-Headers). Ясно, что это надо не в прикладном сервлете/контроллере код писать, а настраивать сам сервер. Как?
Ответ далее в статье.

среда, 4 июня 2014 г.

MSC00001 Failed to start service

Дано: приложение в war-архиве, стартующее на jboss 7.x.
Чтобы достучаться до сервлета, в url по дефолту должно присутствовать название архива, что-то вроде:
http://localhost:8080/war_name/uri
Но по понятным причинам название war'а выносить в url вовсе не хочется.
Что делать?

понедельник, 2 июня 2014 г.

JBAS011006 / JBAS011054

Дано: spring framework 3.2 и jboss 7.X.

При старте в логе предупреждение:
WARN  [org.jboss.as.ee] (MSC service thread 1-6) JBAS011006: Not installing optional component org.springframework.web.context.request.async.StandardServletAsyncWebRequest due to exception: org.jboss.as.server.deployment.DeploymentUnitProcessingException: JBAS011054: Could not find default constructor for class org.springframework.web.context.request.async.StandardServletAsyncWebRequest
    at org.jboss.as.ee.component.ComponentDescription$DefaultComponentConfigurator.configure(ComponentDescription.java:606)
    at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81)
    at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:113) [jboss-as-server-7.1.0.Final.jar:7.1.0.Final]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1811) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1746) [jboss-msc-1.0.2.GA.jar:1.0.2.GA]
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
    at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]

вторник, 13 мая 2014 г.

Web Service endpoint is already registered...

При разворачивании одного приложения на jboss 7.1 / 8.0  деплой оказался омрачён ошибкой:
Caused by: java.lang.IllegalArgumentException: JBAS015533: Web Service endpoint com.sun.xml.ws.tx.webservice.member.coord.ActivationRequesterPortTypeImpl with URL pattern /Coordinator is already registered. Web service endpoint com.sun.xml.ws.tx.webservice.member.coord.RegistrationRequesterPortTypeImpl is requesting the same URL pattern.

понедельник, 15 июля 2013 г.

Загрузка классов jdk на jboss as 7

jboss 7 "из коробки" не видит некоторые пакеты jdk

В прикладном коде приложения используются классы из пакета com.sun.net.httpserver - обычные классы jdk из rt.jar. На сервере приложений jboss 7 попытка запуститься привела к ошибке:
StandardWrapper.Throwable: java.lang.NoClassDefFoundError: com/sun/net/httpserver/HttpHandler
jvm 1    |     at java.lang.Class.getDeclaredConstructors0(Native Method) [rt.jar:1.7.0]
jvm 1    |     at java.lang.Class.privateGetDeclaredConstructors(Class.java:2404) [rt.jar:1.7.0]
...
jvm 1    | Caused by: java.lang.ClassNotFoundException: com.sun.net.httpserver.HttpHandler from [Module "deployment.easygeo-1.0-SNAPSHOT.ear.front-1.0-SNAPSHOT.war:main" from Service Module Loader]
jvm 1    |     at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:190)
jvm 1    |     at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:468)
jvm 1    |     at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:456)
jvm 1    |     at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:398)
jvm 1    |     at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:120)
jvm 1    |     ... 32 more
Казалось бы, jboss запускается же ведь на указанной jdk (запуск выполняется с помощью wrapper.tanukisoftware.com, и во wrapper.conf установлено верное значение JAVA_HOME; да и вообще - всё остальное же работает!). Почему сервер не видит стандартный пакет?
Решение оказалось простым. Файл jboss_home\modules\sun\jdk\main\module.xml содержит перечней тех пакетов jdk, которые деплоятся. Выглядит так:
<module xmlns="urn:jboss:module:1.1" name="sun.jdk">
...
    <dependencies>
        <system-export="true">
            <paths>
                <path name="com/sun/script/javascript"/>
                <path name="com/sun/indi/..."/>
                <path name="com/sun/security/..."/>
                <path name="sun/io"/>
                <path name="sun/util"/>
... и т. д.
Дописал там:
<path name="com/sun/net/httpserver" />
и всё чудесным образом стало хорошо! Аналогично можно подключить и пакеты из resources.jar.
P. S. Хотя это выглядит несколько странным, когда требуется править внутренние конфиги сервера приложений. Возможно, есть более красивое решение?