Я пытаюсь развернуть в стекле-фишке сервис weeb, сгенерированный из EJB, но по какой-то причине мой веб-сервис никогда не отображается в Glassfish. Веб-сервис определяется из интерфейса EJB следующим образом:
@Remote
@WebService
public interface TemplateEJBRemote {
public abstract @WebResult(name="found") Template find(@WebParam(name="templateId", mode=Mode.IN) Long id);
}
Этот интерфейс EJB имеет локальную реализацию:
@Local
@Stateless
public class TemplateEJBImpl implements TemplateEJBRemote {
@PersistenceContext(unitName=NamingConstants.PERSISTENCE_CONTEXT)
private EntityManager entityManager;
@Override
public Template find(Long id) {
return entityManager.find(Template.class, id);
}
}
И оба они определены в модуле war
, который модуль ear
отправляет Glassfish.
Эти модули производят правильно выглядящие артефакты, включая ear
с правильными application.xml
:
<application xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/application_6.xsd"
version="6">
<description>This is the project that will deliver a full usable
EAR including all delivered components. All the project
dependencies here will be included in this</description>
<display-name>my-ear</display-name>
<module>
<web>
<web-uri>my-war-0.0.1-SNAPSHOT.war</web-uri>
<context-root>/my-war</context-root>
</web>
</module>
</application>
При развертывании в Glassfish все, что я могу получить, это
E:\java-ext\glassfish3>bin\asadmin list-components --subcomponents
my-ear-0.0.1-SNAPSHOT <ear, ejb, webservices, web>
my-war-0.0.1-SNAPSHOT.war <WebModule>
Command list-components executed successfully.
мне кажется, что если бы мой веб-сервис был действительно развернут, он появился бы ниже моего war
подмодуля, нет?
Если нет, что я могу сделать, чтобы мой веб-сервис был правильно определен и развернут?
[ОБНОВЛЕНИЕ 1] Чтобы предоставить больше информации, я создал меньшую конечную точку веб-службы - в знаменитом мире Hello, закодированном так:
@WebService
public class Hello {
public String hello(String world) {
return "Salut, "+world+" !";
}
}
, используя это определение, это идеальный веб-сервис Glassfiosh:
Но, как только я сделаю это бобом, как таковой:
@WebService
@Stateless
public class Hello {
public String hello(String world) {
return "Salut, "+world+" !";
}
}
Все становится немного иначе:
Однако, как сказали мне файлы журнала, HelloService все еще присутствует:
[#|2011-03-31T17:55:55.059+0200|INFO|glassfish3.1|javax.enterprise.webservices.org.glassfish.webservices|_ThreadID=339;_ThreadName=Thread-1;|WS00019: EJB Endpoint deployed
autocat-ear-0.0.1-SNAPSHOT прослушивает по адресу http://perigee -567125f: 8080 / HelloService / Hello | #]
Я пытался применить ту же логику к моему начальному компоненту, но с неудачным результатом (конечно, ошибка 404). Итак, я думаю, есть еще одна проблема, скрытая ниже. Но что на? Понятия не имею.
[ОБНОВЛЕНИЕ 2] Чтобы прояснить ситуацию, EJb, который я пытаюсь развернуть, не виден как веб-сервис в консоли Glassfish, и его URL-адрес не может быть пропрошен любым веб-клиентом.