11月17日

Tomcat8 サーバー起動時にZipFileExceptionが発生している人が多いので、maven のサーバーが不調なのかも。

ダウンロードしたファイルが壊れているので、 .m2/repository から壊れたファイルを削除して Maven インストール し直す必要がある。

11月13日

新規ファイルを追加してもアイコンが「?」にならない
EclipseでGitを使用していれば、新規ファイルを追加すればファイルのアイコンに「?」がオーバーレイされるはずなのに、これが表示されないという問題が発生した。プロジェクト内のどこに新規ファイルを作っても、Gitの管理下に追加できない状況になっていた。

調べた結果、プロジェクトを格納しているフォルダの上位フォルダに .gitignore ファイルが作成されていた。
その内容が、

/プロジェクトフォルダ名/

となっていたため、既存ファイル以外のすべての追加が無視されていた。

問題の1行を削除してコミットすることで、新規ファイルに「?」アイコンが表示されるようになった。

同じ問題で困っていた人↓
https://stackoverflow.com/questions/12808656/cant-add-new-file-to-repository-in-egit

11月10日

アプリ内のリンク先URL
アプリ内のリンク先URLを記述しているところに「http://localhost:8080/アプリ名/…」と書いているところがあるが、ホスト名やポート番号は書かないこと。

実際にどこかのサーバーに配備した時に、そのリンクをクリックしたらユーザーのパソコンのWebサーバーにアクセスしようとするために、動作しなくなる。

    <!-- よくない例 -->
    <a href="http://localhost:8080/appname/hoge...">リンク先タイトル</a>

    <!-- 望ましい書き方 -->
    <a href="/${request.contextPath}/hoge...">リンク先タイトル</a>

複数の画面で共通に表示したい内容がある場合
ヘッダーやフッターなど、複数の画面で共通に表示したい内容がある場合は、共通部分だけを記述したJSPファイルを作成し、そのファイルをインクルードするとよい。

<body>

<jsp:include page="header.jsp" />

ページのコンテンツ

<jsp:include page="footer.jsp" />

</body>

10月27日

新しいデータベースインスタンスを作成する方法

hsqldb.bat を編集して引数を追加する。
インスタンスを識別できるように、番号を割り振る。
割り振った番号Nを、引数で割り当てる。

  • –database.N db/dbname
  • –dbname.N dbname
cd C:\pleiades45\hsqldb-2.3.4\hsqldb\lib
java -cp hsqldb.jar org.hsqldb.Server --database.0 db/mydata --dbname.0 mydata --database.1 db/hoge --dbname.1 hoge

HSQLDBを再起動すると、複数のデータベースインスタンスが作られていることがわかる。

[Server@28a418fc]: [Thread[main,5,main]]: checkRunning(false) entered
[Server@28a418fc]: [Thread[main,5,main]]: checkRunning(false) exited
[Server@28a418fc]: Startup sequence initiated from main() method
[Server@28a418fc]: Could not load properties from file
[Server@28a418fc]: Using cli/default properties only
[Server@28a418fc]: Initiating startup sequence...
[Server@28a418fc]: Server socket opened successfully in 10 ms.
[Server@28a418fc]: Database [index=0, id=0, db=file:db/hoge, alias=hoge] opened
successfully in 555 ms.
[Server@28a418fc]: Database [index=1, id=1, db=file:db/mydata, alias=mydata] ope
ned successfully in 106 ms.
[Server@28a418fc]: Startup sequence completed in 683 ms.
[Server@28a418fc]: 2017-10-27 11:01:48.200 HSQLDB server 2.3.4 is online on port
 9001
[Server@28a418fc]: To close normally, connect and execute SHUTDOWN SQL
[Server@28a418fc]: From command line, use [Ctrl]+[C] to abort abruptly

10月13日

EclipseのTomcatのエラーをコンソールに出力する方法

EclipseからTomcatを起動しようとすると、「重大: 以前のエラーのためにコンテキストの起動が失敗しました」のような簡単なメッセージだけ表示して起動できないことがある。

Tomcatが起動しないときは、コンソールにエラーの内容を出力して原因を調べるのが良い。

コンソールにログを出力するには、以下の設定を行う。

プロジェクト・エクスプローラのServerにある「ローカルホストのTomcat8…」を右クリックし、[新規]-[ファイル]を選択する。
ファイル名を「logging.properties」とする。
作成した logging.properties ファイルをダブルクリックして編集する。
以下の内容を記述する。

handlers = java.util.logging.ConsoleHandler

java.util.logging.ConsoleHandler.level = ALL
java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter

「ローカルホストのTomcat8…」を右クリックし、[プロパティー]を選択する。
ロケーションが表示されているので全体をコピーする。(例: C:\Users\…Tomcat8-config)

「ローカルホストのTomcat8…」を右クリックし、[実行]-[実行の構成]を選択する。
「引数」タブを選択し、「VM引数」の最後に以下の内容を追加する。

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file="(ロケーションに表示されていたパス)/logging.properties"

設定を「適用」してTomcatを再起動すれば、コンソールにエラーの内容が表示される。

JSPにCSSやJavaScriptファイルを読み込む方法

まずCSSやJavaScriptを保存するためのフォルダをwebappの下に追加する。

外部ファイルを読み込むための設定を mvc-config.xml に追加する。

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context"
	xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd
		http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
		http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">

    <context:component-scan base-package="jp.abc"/>


    <mvc:annotation-driven />

	<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	        <!-- Example: a logical view name of 'showMessage' is mapped to '/WEB-INF/jsp/showMessage.jsp' -->
	        <property name="prefix" value="/WEB-INF/view/"/>
	        <property name="suffix" value=".jsp"/>
	</bean>

	<mvc:resources mapping="/css/**" location="/css/" />
	<mvc:resources mapping="/js/**" location="/js/" />

</beans>

JSPファイルから読み込むには以下のように記述する。

<!DOCTYPE html>

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="spring" uri="http://www.springframework.org/tags"%>

<html>
<head>
<meta charset="utf-8">
<title>サンプルのWebアプリですよ</title>
<link rel="stylesheet" type="text/css" href="/css/main.css" />
<script type="text/javascript" src="/js/sample.js"></script>
</head>

<body>
<h1>サンプルのWebアプリですよ</h1>
</body>
</html>

10月6日

課題について補足

件名
件名は「何」に対して「どうする」のかを書くこと。ロバストネス図内のView(JSPファイル)・Controller(Javaファイル)・Entity(Javaファイル)や、設定ファイル(XMLファイル)、プロジェクトの内容や詳細を説明するWikiページ、画面に表示する画像ファイル、CSSファイル、JavaScriptファイルなどが「何」にあたる。

詳細
件名だけでわかるようなら詳細は書かなくてもよい。

コメント
Gitにコミット&プッシュする場合は、コミットのコメントに課題IDだけを書く。
自動的に、その課題のコメントに、GitのコミットIDが追加され、どのファイルが変更されたのかがわかるようになる。
Gitにコミット&プッシュしない変更を行った場合は、Wikiページはファイルなどへのリンクをコメントに貼って、その課題による成果がわかるようにすること。

10月2日

これからのチーム開発のやりかた

  1. 毎朝、それぞれが取り組む課題を決定する。
  2. Backlogに課題を登録する。
  3. 課題を「未対応」→「処理中」に変更する。
  4. 課題に取り組む。
  5. ファイルを新規で作った場合はGitに追加する。
  6. 終わったらGitにコミットする(コミットメッセージは課題のIDのみ)
  7. 課題を「処理中」→「処理済み」に変更する。
  8. チームのほかのメンバーに確認してもらう。
  9. 確認したメンバーが課題を「処理済み」→「完了」に変更する。
  10. Backlogのリモートリポジトリにプッシュする。
  11. ほかのメンバーにプッシュしたことを伝え、プルしてもらう。
  12. 1に戻る。

課題の内容は、当日(1~2現の3時間)で完了できる内容にすること。

課題のタイトルは、ロバストネス図に書いた、画面・コントローラ・エンティティなどを書いて、それに対してどのような変更をするのかを記載し、課題で何を解決しようとしているのかが一目でわかるようにすること。

課題の詳細欄には、変更する具体的な内容や、変更するファイル名などを記載する。タイトルだけでわかるのであれば、書かなくてもよい。

9月29日

リーダーが新規でプロジェクトを作成する。
「click to enter」を表示するまでの動作を確認する。
[チーム]-[プロジェクトの共用]を選択する。
リポジトリタイプは「Git」を選択する。
適当な場所にリポジトリを作成して「完了」をクリックする。

プロジェクトホームに「.gitignore」ファイルを作成する。

/target
.settings/
.classpath
/pleiades45

[チーム]-[コミット]でファイルをリポジトリに登録する。
不要なファイルが含まれていないか確認して、含まれていれば「.gitignore」ファイルに設定を追加する。
問題なければコミットを実行する。

[チーム]-[リモート]-[プッシュ]を選択し、BacklogのGitにあるリモートリポジトリにプッシュする。
プッシュ先のURLは、BacklogのGitのURLをコピーして使用する。

他のメンバーは、[新規]-[インポート]で、プロジェクトをBacklogのリモートリポジトリからインポートする。
インポートソースの選択で「Gitからプロジェクト」を選択し「次へ」をクリック。
「URLの複製」を選択して「次へ」をクリック。
BacklogのGitのURLをコピーしてURIにペーストし、BacklogのユーザーIDとパスワードを入力して「次へ」をクリック。
「master」が選択されていることを確認して「次へ」をクリック。
ローカルリポジトリのディレクトリーを指定して「次へ」をクリック。
プロジェクトをインポートするためのウィザードで「Import existing Eclipse project」を選択し「次へ」をクリック。
インポートしたいプロジェクトにチェックが入っていることを確認して「完了」をクリック。

あとはこれまでと同じように
[Maven]-[プロジェクトの更新]
[実行]-[maven install」
を実行すれば、ローカルでもWebアプリが動作するようになる。