Archive for the ‘未分類’ Category.

Springのまったくのメモ

リアルタイムなメモ書きです。

■Springの動き
org.springframework.web.servlet.DispatcherServlet
を使用した場合

1.コンテナ起動時には、HttpServlet#initを呼び出す
2.org.springframework.web.servlet.HttpServletBean#initが呼び出される

	public final void init() throws ServletException {
		if (logger.isDebugEnabled()) {
			logger.debug("Initializing servlet '" + getServletName() + "'");
		}
 
		// Set bean properties from init parameters.
		try {
			PropertyValues pvs = new ServletConfigPropertyValues(getServletConfig(), this.requiredProperties);
			BeanWrapper bw = new BeanWrapperImpl(this);
			ResourceLoader resourceLoader = new ServletContextResourceLoader(getServletContext());
			bw.registerCustomEditor(Resource.class, new ResourceEditor(resourceLoader));
			initBeanWrapper(bw);
			bw.setPropertyValues(pvs, true);
		}
		catch (BeansException ex) {
			logger.error("Failed to set bean properties on servlet '" + getServletName() + "'", ex);
			throw ex;
		}
 
		// Let subclasses do whatever initialization they like.
		initServletBean();
 
		if (logger.isDebugEnabled()) {
			logger.debug("Servlet '" + getServletName() + "' configured successfully");
		}
	}

3.initServletBeanで呼ばれた先
4.createWebApplicationContext
5.org.springframework.context.support.AbstractApplicationContext#refresh

	public void refresh() throws BeansException, IllegalStateException {
		synchronized (this.startupShutdownMonitor) {
			// Prepare this context for refreshing.
			prepareRefresh();
 
			// Tell the subclass to refresh the internal bean factory.
			ConfigurableListableBeanFactory beanFactory = obtainFreshBeanFactory();
 
			// Prepare the bean factory for use in this context.
			prepareBeanFactory(beanFactory);
 
			try {
				// Allows post-processing of the bean factory in context subclasses.
				postProcessBeanFactory(beanFactory);
 
				// Invoke factory processors registered as beans in the context.
				invokeBeanFactoryPostProcessors(beanFactory);
 
				// Register bean processors that intercept bean creation.
				registerBeanPostProcessors(beanFactory);
 
				// Initialize message source for this context.
				initMessageSource();
 
				// Initialize event multicaster for this context.
				initApplicationEventMulticaster();
 
				// Initialize other special beans in specific context subclasses.
				onRefresh();
 
				// Check for listener beans and register them.
				registerListeners();
 
				// Instantiate all remaining (non-lazy-init) singletons.
				beanFactory.preInstantiateSingletons();
 
				// Last step: publish corresponding event.
				finishRefresh();
			}
 
			catch (BeansException ex) {
				// Destroy already created singletons to avoid dangling resources.
				beanFactory.destroySingletons();
 
				// Reset 'active' flag.
				cancelRefresh(ex);
 
				// Propagate exception to caller.
				throw ex;
			}
		}
	}

6.org.springframework.web.context.support.XmlWebApplicationContextのコンストラクタ

7.org.springframework.web.servlet.FrameworkServlet#getNameSpace()
Servlet名 + -servlet

8.org.springframework.context.support.AbstractApplicationContext#refresh

9.org.springframework.web.context.supportXmlWebApplicationContext#getDefaultConfigLocations()
8のnamespace + “.xml”

10.設定(applicationContext.xml)をロードしているところ
org.springframework.beans.factory.xml.XmlBeanDefinitionReader#registerBeanDefinitions
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#registerBeanDefinitions
org.springframework.beans.factory.xml.DefaultBeanDefinitionDocumentReader#parseBeanDefinitions


CentOSにMySQLをインストール

同じようなことばかり書いてる。
yumを使ってインストールするだけなので特にメモの必要はないかなと思いますが、PHP拡張モジュールの設定も必要なので備忘。

 yum install mysql php-mysql

これで現時点では以下バージョンが入りました。

# yum info mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
 * centosplus: rsync.atworks.co.jp
 * addons: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
Installed Packages
Name       : mysql
Arch       : i386
Version    : 5.0.45
Release    : 7.el5
Size       : 7.3 M
Repo       : installed
Summary    : MySQL のクライアントプログラムと共有ライブラリ。
URL        : http://www.mysql.com
License    : GPLv2 with exceptions
Description: MySQL is a multi-user, multi-threaded SQL database server. MySQL is a client/server implementation consisting of a server daemon (mysqld)
           : and many different client programs and libraries. The base package contains the MySQL client programs, the client shared libraries, and
           : generic MySQL files.
# yum info php-mysql
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
 * centosplus: rsync.atworks.co.jp
 * addons: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
Installed Packages
Name       : php-mysql
Arch       : i386
Version    : 5.1.6
Release    : 23.2.el5_3
Size       : 175 k
Repo       : installed
Summary    : MySQL データベースを使用した PHP アプリケーション用のモジュール
URL        : http://www.php.net/
License    : The PHP License v3.01
Description: The php-mysql package contains a dynamic shared object that will add MySQL database support to PHP. MySQL is an object-relational
           : database management system. PHP is an HTML-embeddable scripting language. If you need MySQL support for PHP applications, you will need
           : to install this package and the php package.

php.iniにもMySQLモジュールが自動で設定されてるのかな?とphp.iniを確認しましたが、どうやらphp.iniは更新されているようでした。多分php-mysqlをインストールした場合は普通はphp.iniを確認すると思うのでこれは便利かな。Windowsではレジストリとか更新されてるとぜんぜん追えないし。

しかし、これだとサーバーが入っていないので、追加でmysql-serverを入れる必要があるのに気づきましたので入れます。

# yum install mysql-server

そしてMySQLの設定ファイル/etc/my.cnfに以下追記
(参照:データベースサーバー構築(MySQL)

default-character-set = utf8
 
[mysql]
default-character-set = utf8

そして起動します。

# /etc/rc.d//init.d/mysqld start

今日はこのくらいで。


NAVITIME

携帯電話はauを使っていますが、auにはNAVITIMEと言うそのまんまですが、ナビゲーション用のアプリがあります。
これ、良く使うのですが、どうしても改善して欲しいところがあります。
ナビゲーションされる時、二次元の地図上に矢印で方向を示してくれるのですが、曲がり角が近くなると勝手に3Dのマップに切り替わっちゃいます。
標準マップに戻しても曲がり角の近くである場合は3Dに戻ります。3Dマップをオプションでオフにしても全く効きません。
これはバグだと思うんですが、一向にバージョンアップの気配がない。
これ見たら何とかしてください。