404 после автоматического развертывания сервлета на стеклянную рыбу - PullRequest
0 голосов
/ 16 марта 2009

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

[#|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 -> java.net.URLClassLoader@39cf701c

|#]

[#|2009-03-16T13:41:29.361+0000|INFO|sun-appserver2.1|javax.enterprise.system.stream.out|_ThreadID=23;_ThreadName=Timer-7;|
SharedSecrets.getJavaNetAccess()=java.net.URLClassLoader$7@5e7408d9|#]

[#|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>

Ответы [ 2 ]

1 голос
/ 16 марта 2009

Было несколько проблем с этим развертыванием. Во-первых, необходимо включить второй файл конфигурации в каталог 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>

Кажется, что он может стать намного сложнее (см. документацию ).

Во-вторых, мне пришлось изменить заголовок файла 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 голосов
/ 08 мая 2015

Я изменил 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 или нет.

...