2009-03-16 10 views
0

私はGlassfishアプリケーションサーバーに作成したサーブレットをデプロイしようとしましたが、ちょっとした障害に遭ったようです。コードは自動デプロイフォルダに罰金展開し、それがログファイルに書き込まれ、次の展開だ後:サーブレットを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 -> [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-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

この展開での問題のカップルがありました:

私のWARファイル内のweb.xmlは次のようになります。まず、という名前のWEB-INFディレクトリに2番目の設定ファイルを含める必要があります。それは、(the documentationを参照)これより多くの、より複雑にする可能性を持っていると思わ

<?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

私はweb.xmlを変更しました。私は単にordのconfigディレクトリのフルパスを追加しました。

<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年前に解決策を見つけた質問にどのくらい正確に答えていますか? –

関連する問題