Tomcatを用いたWebアプリケーション作成についてご質問させてください。

Webアプリケーション実行時に読み込まれるクラスパスを任意に追加することは可能でしょうか。標準では{CONTEXT_ROOT}/WEB-INF/classesと{CONTEXT_ROOT}/WEB-INF/libにあるクラスがサーブレット上で実行されるクラスとして読み込まれますよね。これ以外に任意のディレクトリをクラスパスとして追加し、そのディレクトリにあるクラスをサーブレット上で実行したいのですが、可能でしょうか。

環境変数にクラスパスを設定してみたり、{TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加してみたりもしたのですが、結果は両方ともNoClassFoundExceptionでした。

ご教示お願いいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

一般的にアプリケーションサーバでは、アプリケーションサーバ自体が使用するクラスローダと、Webアプリケーションが使用するクラスローダを明確に分けている場合が多いです。


また、アプリケーションサーバ起動時に指定するclasspath指定はアプリケーションサーバ自体が使用するクラスへのパスを指定するのが普通です。

Tomcatでは、複数のWebアプリケーション間で共通で使用するクラスの格納先が指定されているようです。ただし、Tomcat3.x系と、4.x系以上とでは違いがあるようです。

詳しくは、以下のドキュメントを参考にしてください。

Tomcat3.x系
http://jakarta.apache.org/tomcat/tomcat-3.3-doc/ …

Tomcat4.x系
http://jakarta.apache.org/tomcat/tomcat-4.1-doc/ …

Tomcat5.x系
http://jakarta.apache.org/tomcat/tomcat-5.0-doc/ …
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。ご提示いただいたURLで調べてみようと思います。

お礼日時:2005/04/28 16:55

#2です。



失礼しました。
>TOMCAT_HOME}/bin/setclaspass.shにクラスパスを追加…
自分の回答は↑の部分に思いっきり書いてありましたね。
熟読せずに回答してしまい申し訳ありませんでした。
m(_ _)m
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。Tomcatを起動する為のシェルスクリプトにはクラスパスを指定したのですけどダメでした。もうちょっと色々がんばってみようと思います。

お礼日時:2005/04/28 16:57

(Tomcatの起動についてそこまで詳しくないので、憶測です。

)

Tomcatを起動するときにJavaVMを起動しているはずなので、そのsh?ファイルか何かで
java -cp ~
とか
jre -cp ~
とかやってるとしたらそこにクラスパスを付け加えてみては?
(って憶測ですので、そんなshファイルないかもです。)
    • good
    • 0

私は


{JAVA_HOME}/jre/lib/ext ディレクトリにclassファイルをjarにまとめて貼り付けています。
    • good
    • 0
この回答へのお礼

ご回答いただきありがとうございます。ご提示いただいた方法を試してみたいと思います。

お礼日時:2005/04/28 16:58

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QA・B・Cクラスとは?

プロ野球の年間順位をA・B・Cクラスと分けてるようですが、どんな基準なのでしょうか?

Aベストアンサー

普通は、1~3位をAクラス、4~6位をBクラスと称しています。
Aクラスのチームは、来期の開幕ゲームの主催権をもらえ、本拠地でシーズンを迎えられますます。
(タイガースの様に他の事情で開幕権を使わない場合も有りますが。)
もちろん、Bクラスのチームはその対戦相手として、最初から遠征する事になります。

目標はあくまでも優勝ですが、それがかなわない時はAクラス入りを。
(やはり3位よりは2位の方が言いに決まってますが)
そしてBクラスに甘んじた場合でも、より良い順位として4位を目指し、とにかく最下位だけは避けたい。
・・・・・こんな感じだと思います。

Cクラス・・・と言うのはあまり聞きませんが、1チームだけダントツに成績が振るわない場合など、Bクラスの評価にも満たない!っと言った意味合いで使われるのではないでしょうか?

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

Qこんばんわ中2女子です 新しいクラスになり仲いい子が出来ました A,B,CちゃんがいるグループとD,

こんばんわ中2女子です

新しいクラスになり仲いい子が出来ました
A,B,CちゃんがいるグループとD,Fちゃんが
いるグループと仲いいです,
Aちゃんたちグループの子に
「3人グループだと誰かひとりになるからこれから仲良くしてね!」
と言われ承知しましたがDちゃんに
「Aちゃんが嫌いだからAちゃんと仲良くしないでね」
と言われてしまいました…個人的には全員大好きな友達で
どうすればいいか分かりません...
嫌いな理由を聞くと前にAちゃんとの事で
トラブルがありトラウマだからと言います…
もう何が何だかわかりません
同クラの他の人に仲いい子はいません
AちゃんといるとDちゃんは隣に来てじっと
こっちを見てきます。怒られそうで怖いです
誰かアドバイスをお願いします

Aベストアンサー

私はAちゃんのこともDちゃんのコトも同じぐらい好きまでどちらも選べない。
DちゃんがAちゃんの何が嫌いなのかは知らないけど、それはAちゃん自身の気持ちだからAちゃんの中で大切にしていれば良い。
Aちゃん自身の思いや考え方を私に押し付けるのはどうなの?
私のコトを本当に友達だと思うのなら、私の自由にさせてよ。
私にだって決める権利はある。
それを奪わないで。
と言ってみたら?
貴女の尊厳を奪うような友達は本当に友達なんですか?
貴女には意志と言うモノがあるはず。
向こうの一方的な気持ち、考えを押し付けられて、貴女たけが苦しむなんておかしい。
本当の友達は間違ってるコトを間違って言える人です。
友達ごっこなら話は別ですが。

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

Qなんか友達がうざいです 私はクラスでイツメン5人です(私含めて) そのイツメン4人をA、B、C、D

なんか友達がうざいです
私はクラスでイツメン5人です(私含めて)

そのイツメン4人をA、B、C、Dとします

A→うざいって人

でその人はLINEの一言に

Bかわいい
Cすき
Dおもしろい
ついでにひな…←私の名前

とか書いてて正直嫌です
ついでとかなんだよって感じ

それでその子とのLINEで私が
「(´>∀<`)ゝ))エヘヘ」って送ったら
「エヘヘじゃない」
ってきて
「すみません」っていうスタンプ送ったら
「うざいスタンプありがとう」
ってきました。
別にそのスタンプうざくないと思うんですけど…w
それで私が「いえいえw」って送ったら
「うん。反応もうざい」ってきました

ちょっとふざけていえいえwって送ったのにまじレスしてきてうざいです

冗談通じねぇのかよ

しかも私そいつに対して何もしてないです
なんなんあいつ

反応もうざいってやつにまだ返信してないんですけどなんて返せばいいですかね??

Aベストアンサー

おバカさんは放っておく。

QTOMCATでのサーブレット環境構築

初心者です。

Tomcat4.1を使ってサーブレットを動かしたいと思います。
manage/installを使ってWebアプリをインストールするところまではわかりました。

ディレクトリ[c:\java\test\]の配下に
[WEB-INF\classes\]というディレクトリを掘って
そこにtest.javaとそれをコンパイルしたtest.classがあります。

この状態で
http://localhost:8080/manager/install?path=/test&war=file:c:/java/test
といれ、testというwebアプリをインストールしました。

listでも確認し、登録されていました。
しかし
http://localhost:8080/test/servlet/test
とやっても動作しません。
HTTP 404エラーがでます。
(description The requested resource (/test/servlet/test) is not available.)

何が足らないのでしょうか?ご指示をお願いします。
できればわかりやすく解説してあるサイトとかを教えていただければありがたいです。
ちなみにサンプルではいってたexamplesのサーブレットは動作します。
環境はWindows2000です。

初心者です。

Tomcat4.1を使ってサーブレットを動かしたいと思います。
manage/installを使ってWebアプリをインストールするところまではわかりました。

ディレクトリ[c:\java\test\]の配下に
[WEB-INF\classes\]というディレクトリを掘って
そこにtest.javaとそれをコンパイルしたtest.classがあります。

この状態で
http://localhost:8080/manager/install?path=/test&war=file:c:/java/test
といれ、testというwebアプリをインストールしました。

listでも確認し、登録されていました。
しか...続きを読む

Aベストアンサー

WEB-INFの下にweb.xmlがないためですね。

旧バージョンではconfフォルダのweb.xmlで
デフォルトで特に気にしなくても動いていた
ようですが、セキュリティの観点から現在は
その部分がコメントアウトされているみたいですね。

なのでとりあえず
「Servletを組んでみたい」
「Servletのプログラムを学んでみたい」
というのであれば、confフォルダのweb.xmlの

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

がコメントアウトされていると思うので、コメントアウト
をはずしてください。ただ、あまりお勧めはしません^^;

ちゃんとWEB-INFの下にweb.xmlを作るのであれば
参考サイトを見ながら・・・・


<?xml version="1.0" encoding="ISO-8859-1"?>

<!DOCTYPE web-app
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
<servlet>
<servlet-name>test</servlet-name>
<servlet-class>test</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>test</servlet-name>
<url-pattern>/servlet/test</url-pattern>
</servlet-mapping>
</web-app>

のような感じでweb.xmlを作ればとりあえずは
動くと思います。

ちなみに当方はちゃんと確認をとっていないので、
自身がなかったり^^;

では、がんばってください

参考URL:http://www.sk-jp.com/java/servlet/webxml.html

WEB-INFの下にweb.xmlがないためですね。

旧バージョンではconfフォルダのweb.xmlで
デフォルトで特に気にしなくても動いていた
ようですが、セキュリティの観点から現在は
その部分がコメントアウトされているみたいですね。

なのでとりあえず
「Servletを組んでみたい」
「Servletのプログラムを学んでみたい」
というのであれば、confフォルダのweb.xmlの

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>

がコメント...続きを読む

QC#で同じクラスAを継承したクラス1~20に対しての処理をきれいにしたい

C#でClassAを継承したClass1~20があり、
それらに以下のような処理をしているのですが、行数が増えすぎて見難いです。
もっと綺麗に書く方法はないのでしょうか?
class10の処理が「同じ処理」ならClassA型の配列でいけそうなんですが…。
class10だけ配列に入れないか、配列に入れてclass10の部分だけスキップするしか方法はないんでしょうか?
(頭が小文字なのはそのクラスのインスタンスです)
if(class1 != null)
{
  class1.同じ処理
}
if(class2 != null)
{
  class2.同じ処理
}
if(class3 != null)
{
  class3.同じ処理
}
   ・
   ・
   ・
if(class10 != null)
{
  class10.別の処理
}
   ・
   ・
   ・
if(class20 != null)
{
  class20.同じ処理
}

Aベストアンサー

> class10の処理が「同じ処理」ならClassA型の配列でいけそうなんですが…。
なら、メソッドを呼び出す側から見て同じ処理にしてしまえばいいんです。
そのためのメソッドのオーバーライドです。

public ClassA
{
 // ......

 public virtual void someMethod()
 {
  同じ処理
 }
}

Class10 : ClassA
{
 // ......

 public override void someMethod()
 {
  別の処理
 }
}

という具合にして、ClassA型の配列で回して someMethod() を実行しましょう。
someMethod() の引数・戻り値はやりたい処理に合わせて修正してください。

Q作成したサーブレットが表示されません(Tomcat使用)

はじめまして。
本を見ながらサーブレットを作成、実行したところエラーに
検索するも知識が浅いために理解できず、行き詰ってしまいました。
解決法ご存知の方おられましたら、ご教示いただけますと幸いです。

************
(略)Tomcat 5.5\webapps\kajsp\WEB-INF\classesの直下にhello_servlet1.classを置き実行したところ、以下のエラーが…
************
HTTPステータス 404 - /kajsp/hello_servlet1
------------
ステータスレポート
/kajsp/hello_servlet1
The requested resource (/kajsp/hello_servlet1) is not available.
------------
Apache Tomcat/5.5.20

************
web.xmlファイルは以下のとおりです。WEB-INF直下に置きました。
************
<?xml version="1.0" encoding="Windows-31J"?>
<servlet>
<servlet-name>hello_servlet1</servlet-name>
<servlet-class>hello_servlet1</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello_servlet1</servlet-name>
<url-pattern>hello_servlet1</url-pattern>
</servlet-mapping>
************
http://localhost:8080/ は見る事ができるのですが、
http://localhost:8080/kajsp/hello_servlet1 ではエラーが出ます。
************
環境は
Windows XP Home(SP2)
JDK JRE:1.5.0_09
Tomcat:5.5
です。
初歩的な質問で申し訳ありませんが、よろしくお願い致します。

はじめまして。
本を見ながらサーブレットを作成、実行したところエラーに
検索するも知識が浅いために理解できず、行き詰ってしまいました。
解決法ご存知の方おられましたら、ご教示いただけますと幸いです。

************
(略)Tomcat 5.5\webapps\kajsp\WEB-INF\classesの直下にhello_servlet1.classを置き実行したところ、以下のエラーが…
************
HTTPステータス 404 - /kajsp/hello_servlet1
------------
ステータスレポート
/kajsp/hello_servlet1
The requested resource (/kajsp/hell...続きを読む

Aベストアンサー

Javaは当分やってないので、動くかわかりませんが、あなたのweb.xmlには1つ間違いがあります。

<url-pattern>/hello_servlet1</url-pattern>
スラッシュがぬけております。

過去に似たような質問にばか丁寧に答えたのでよかったら参考にしてください。

参考URL:http://oshiete1.goo.ne.jp/qa2141749.html

Qオブジェクト指向における「クラスA have a クラスB」の関係において,クラスBからクラスAのあるメンバ変数だけを触る方法

クラス10~50個の中規模プログラミングに当たって,以下の問題がよく出てきて,
「簡潔な方法はないものか・・・」と悩んでいます.

●前提条件
【・「クラスAに持たれているクラスB( A have a B 関係)において,
  クラスBからクラスAのあるメンバ変数(プロパティ)だけを触りたい」】

この場合,私はよく以下のようにしてしまい,クラス間の独立性を無くしてしまいます.
●方法1:
・クラスBのコンストラクタに「自分の持ち主であるクラスAのオブジェクト」を引数に取り,クラスBの変数(プロパティ)usedClassAとする.

=======
C言語風に書くと,
<code>
public void クラスA{
  クラスB usingClassB = new クラスB(); // 持っているクラスB
  int commonNum = 0;
  public void AddCommonNum(){
      commonNum++;
   }
   ...
   (その他の処理)
   ...
}

public void クラスB{
   class usedClassA;    // 持ち主のクラスA

   // コンストラクタ
   public クラスB(クラスA _usedClassA){
       usedClassA = _usedClassA;
   }
   public void AddCommonNum(){
       _usedClassA.AddCommonNum();
   }
}
<\code>
となります.

この方法の問題点は,クラスAとクラスBに<双方向の依存関係を作っている>ことで,
クラスAの設計(ここではAddCommonNum())が変更されたときに,クラスBの内容を変更しなければならない可能性があることから,拡張性に欠けると考えています.

そこで,他に何かいい実装方法が無いか,
教えていただけないでしょうか?
特に,このような前提条件に汎用的に使える方法だと尚良いです.

クラス10~50個の中規模プログラミングに当たって,以下の問題がよく出てきて,
「簡潔な方法はないものか・・・」と悩んでいます.

●前提条件
【・「クラスAに持たれているクラスB( A have a B 関係)において,
  クラスBからクラスAのあるメンバ変数(プロパティ)だけを触りたい」】

この場合,私はよく以下のようにしてしまい,クラス間の独立性を無くしてしまいます.
●方法1:
・クラスBのコンストラクタに「自分の持ち主であるクラスAのオブジェクト」を引数に取り,クラスBの変数(...続きを読む

Aベストアンサー

 こんにちは。
 簡単な話、共通のプロパティクラスを作成して、ClassAとClassBが其れを参照したり更新したりすれば、ClassAとClassBは左程依存しないのでは。
 一応C++で、其れらしき事をしてみましたので、参考程度に。

#pragma warning(disable : 4786)
#include<map>
#include<string>

//プロパティオブジェクトココから
struct IVariantHolder
{
  virtual ~IVariantHolder(){ }
};

template<class __TP>
struct CVariantHolder : public IVariantHolder
{
  typedef typename __TP variant;

  explicit CVariantHolder(const variant& val) : m_val(val){}
  ~CVariantHolder(){}

  variant& Get(){ return m_val; }
  const variant& Get() const { return m_val; }
  operator variant&(){ return m_val; }
  operator const variant&() const { return m_val; }
private:
  variant m_val;
};

struct CPropertyData
{
  typedef std::map<std::string, IVariantHolder*> map_t;
  template<class __TP>
  bool AddProperty(const __TP& tp, const std::string& sPropertyName)
  {
    if(GetProperty(sPropertyName))return false;
    return m_map.insert(std::make_pair(sPropertyName, new CVariantHolder<__TP>(tp))).second;
  }
  IVariantHolder* GetProperty(const std::string& sPropertyName)
  {
    return const_cast<IVariantHolder*>(
                static_cast<const CPropertyData&>(*this).GetProperty(sPropertyName)
                     );
  }
  const IVariantHolder* GetProperty(const std::string& sPropertyName) const
  {
    map_t::const_iterator it = m_map.find(sPropertyName);
    return it == m_map.end() ? 0 : it->second;
  }
private:
  map_t m_map;
};

template<class __TP>
static __TP* Lock(CPropertyData* property, const std::string& sPropertyName)
{
  CVariantHolder<__TP>* pVal = dynamic_cast<CVariantHolder<__TP>*>(property->GetProperty(sPropertyName));
  return pVal ? &pVal->Get() : 0;
}
//プロパティオブジェクトココまで

//テスト用の構造体
struct CommonStruct
{
  CommonStruct(long _l, short _s, char _c) : l(_l), s(_s), c(_c){}
  longl;
  shorts;
  charc;
};

//クラスAとクラスBココから
struct ClassB;
struct ClassA
{
  ClassA(ClassB* p, CPropertyData* property) : m_useClassB(p), m_property(property)
  {
    //ココでメンバ変数(プロパティ)の領域を動的に作成する
    m_property->AddProperty(int(0), "commonNum");
    m_property->AddProperty(CommonStruct(4, 2, 1), "commonStruct");
  }
  void DisplayProperty()
  {
    ::printf("%s %d %s\n", "[commonNum : ", *::Lock<int>(m_property, "commonNum"), "]");

    CommonStruct* p = ::Lock<CommonStruct>(m_property, "commonStruct");
    ::printf("%s <%d><%d><%d> %s\n", "[commonStruct <l><s><c> : ", p->l, p->s, p->c, "]");
  }
private:
  ClassB*m_useClassB;
  CPropertyData*m_property;
};

struct ClassB
{
  explicit ClassB(CPropertyData* property) : m_property(property){}
  void AddCommonNum()
  {
    int* pi = ::Lock<int>(m_property, "commonNum");
    (*pi)++;
  }
  void SetCommonStruct(long l, short s, char c)
  {
    CommonStruct* pc = ::Lock<CommonStruct>(m_property, "commonStruct");
    new (pc) CommonStruct(l, s, c);
  }
private:
  CPropertyData*m_property;
};
//クラスAとクラスBココまで

//お試し
int main()
{
  //両方に共通なプロパティオブジェクト
  CPropertyData property;

  //クラスBに渡す
  ClassB b(&property);

  //クラスAにクラスBとプロパティオブジェクトを渡す
  ClassA a(&b, &property);

  //クラスBでプロパティを操作する
  b.AddCommonNum();
  b.SetCommonStruct(10, 20, 30);

  //クラスAでプロパティを表示する
  a.DisplayProperty();
  return 0;
}

 こんにちは。
 簡単な話、共通のプロパティクラスを作成して、ClassAとClassBが其れを参照したり更新したりすれば、ClassAとClassBは左程依存しないのでは。
 一応C++で、其れらしき事をしてみましたので、参考程度に。

#pragma warning(disable : 4786)
#include<map>
#include<string>

//プロパティオブジェクトココから
struct IVariantHolder
{
  virtual ~IVariantHolder(){ }
};

template<class __TP>
struct CVariantHolder : public IVariantHolder
{
  typedef typename __T...続きを読む

QTomcatでサーブレットを動かそうとするとHTTP 404エラーにな

Tomcatでサーブレットを動かそうとするとHTTP 404エラーになってしまいます。

使用環境は以下の通りです。
Tomcat 5.5.20
jdk 1.6.0_20
Eclipse pleiades-e3.5

Tomcatプロジェクト名entryを作成し、WEBINF-src以下に
inputパッケージを、その中にHelloServlet.javaを作り、
web-xmlをentryの直下に作成しました。

取り敢えず動作確認をしたいのですが、404エラーになってしまいます。
Tomcatを再起動しても駄目でした。
どなたか助言を頂けると大変助かります。。

以下確認した事です。
・http://localhost:8080/manager/htmlにて/entryのデプロイを確認済み。

・textファイルを配置した時はhttp://localhost:8080/entry/hello.txt
で動作確認済み。

・web-xmlは動作確認がとれているものをコピペして必要な部分だけ書き直し、
      何度か確認したのですが、記述中の←の所でスペルが正しくありませんと言われています。

<?xml ← version="1.0" encoding="Shift-JIS"?>

<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-appp_2_4.xsd"
version="2.4">

<servlet>
<servlet-name>HelloServlet</servlet-name>
<servlet-class>input.HelloServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>

</web-app>

情報が少なくて申し訳ないですが、よろしくお願いします。

Tomcatでサーブレットを動かそうとするとHTTP 404エラーになってしまいます。

使用環境は以下の通りです。
Tomcat 5.5.20
jdk 1.6.0_20
Eclipse pleiades-e3.5

Tomcatプロジェクト名entryを作成し、WEBINF-src以下に
inputパッケージを、その中にHelloServlet.javaを作り、
web-xmlをentryの直下に作成しました。

取り敢えず動作確認をしたいのですが、404エラーになってしまいます。
Tomcatを再起動しても駄目でした。
どなたか助言を頂けると大変助かります。。

以下確認した事です。
・http://localhost...続きを読む

Aベストアンサー

最初に確認しておきたいのだけど
web-xml
とか書いているけど
実際は
web.xml
よね?

正確に書いてくれないと困るわ。

web.xmlでその時点で問題があるという場合
文字コード関連かしら。

あとDOCTYPEも書いた方がいいわよ。


人気Q&Aランキング

おすすめ情報