2009-03-16 3 views
0

Я попытался развернуть сервлет, который я создал для сервера приложений Glassfish, и, похоже, я немного ударил камень преткновения. Код развертывает штраф в папку автоматического развертывания, и после его развертывания следующие записываются в лог-файл:404 после автоматического развертывания сервлета на стеклянную рыбку

[#|2009-03-16T13:41:29.303+0000|INFO|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Timer-7;|[AutoDeploy] Selecting file /opt/glassfish-2.1.b60e/domains/imageTransformer/autodeploy/image-transformer.war for autodeployment.|#] 

[#|2009-03-16T13:41:29.304+0000|INFO|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Timer-7;|Autoundeploying application :image-transformer|#] 

[#|2009-03-16T13:41:29.360+0000|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=23;_ThreadName=Timer-7;| 
classLoader = WebappClassLoader 
    delegate: true 
    repositories: 
    /WEB-INF/classes/ 
----------> Parent Classloader: 
EJBClassLoader : 
urlSet = [] 
doneCalled = false 
Parent -> [email protected] 

|#] 

[#|2009-03-16T13:41:29.361+0000|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=23;_ThreadName=Timer-7;| 
SharedSecrets.getJavaNetAccess()[email protected]|#] 

[#|2009-03-16T13:41:29.487+0000|INFO|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Timer-7;|[AutoDeploy] Successfully autoundeployed : /opt/glassfish-2.1.b60e/domains/imageTransformer/autodeploy/image-transformer.war.|#] 

[#|2009-03-16T13:41:29.612+0000|INFO|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Timer-7;|deployed with moduleid = image-transformer|#] 

[#|2009-03-16T13:41:29.783+0000|INFO|sun-appserver2.1|javax.enterprise.system.tools.deployment|_ThreadID=23;_ThreadName=Timer-7;|[AutoDeploy] Successfully autodeployed : /opt/glassfish-2.1.b60e/domains/imageTransformer/autodeploy/image-transformer.war.|#] 

Так что нет явных ошибок, но после того, что я получаю 404 от доступа к пути, что сервлет должен быть связан с. Есть ли еще один шаг, который мне нужно пройти?

web.xml в моем файле WAR выглядит следующим образом:

<web-app> 
    <servlet> 
     <servlet-name>MyServlet</servlet-name> 
     <servlet-class>my.servlet.MyServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>MyServlet</servlet-name> 
     <url-pattern>/hello</url-pattern> 
    </servlet-mapping> 
</web-app> 
+0

Это первый раз развертывание или повторное развертывание приложения? – Mark

+0

Это приложение, которое я использую в первый раз. Я никогда не использовал его раньше. – Ceilingfish

ответ

1

Существовали несколько проблем, связанных с этим развертыванием. Во-первых, существует потребность в том, чтобы второй файл конфигурации был включен в каталог WEB-INF с именем sun-web.xml. Его содержание должно быть что-то вдоль линий:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE sun-web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Application Server 8.1 Servlet 2.4//EN" "http://www.sun.com/software/appserver/dtds/sun-web-app_2_4-1.dtd"> 
<sun-web-app error-url=""> 
    <context-root>/MyServlet </context-root> 
</sun-web-app> 

кажется, есть потенциал, чтобы получить намного сложнее, чем это (см the documentation).

Во-вторых, я должен был изменить заголовок файла web.xml, поэтому он прочитал соответственно:

<?xml version="1.0" encoding="UTF-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/j2ee" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee 
     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" 
     version="2.4"> 
    <servlet> 
     <servlet-name>MyServlet</servlet-name> 
     <servlet-class>my.servlet.MyServlet</servlet-class> 
    </servlet> 

    <servlet-mapping> 
     <servlet-name>MyServlet</servlet-name> 
     <url-pattern>/hello</url-pattern> 
    </servlet-mapping> 
</web-app> 

Примечание заголовки, указывающие, что это сервлет спецификации 2.4.

Наконец, также кажется, что вы не можете получить доступ к этому сервлету напрямую; вы должны добавить MyServlet/ (или имя сервлета) в начало пути. Чтобы получить доступ к этому сервлету, вам необходимо посетить /MyServlet/hello.

0

I модифицировано web.xml; Я просто добавил полный путь к каталогу config для ords.

<display-name>Oracle Application Express Listener</display-name> 
<context-param> 
    <param-name>config.dir</param-name> 
    <!-- Enter the location where configuration settings should be stored --> 
    <param-value>/odata/apps/ords/config</param-value> 
</context-param> 

Это работает независимо от того, есть ли sun-web.xml.

+1

Извините, как именно это отвечает на вопрос, для которого OP уже нашел решение 6 лет назад ...? –

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