2013-03-24 2 views
0

AWS Linux 마이크로 인스턴스에 Tomcat 7 및 MySQL 5.5를 설치했습니다. Tomcat 7을 MySQL과 통신하도록 구성하는 방법을 알아 내려고했지만 운이 없었습니다. 나는 항상 Glassfish 사용자 였으므로 GUI를 통해 수행하는 것이 매우 간단합니다. 그러나 Tomcat에서는이를 구성하는 방법을 잘 모릅니다.AWS Linux tomcat7을 사용하여 mysql 구성

Tomcat 7의 Apache 설명서를 살펴 보았지만 더 혼란 스러웠습니다. 파일을 편집해야하는 곳이 어디인지 알 수 없으며 파일을 편집 할 대상을 모르겠습니다. MySQL 드라이버를 설치해야합니까? JDBC 또는 JNDI를 사용합니까? 내 응용 프로그램은 최대 절전 모드를 사용하는 Tapestry5 응용 프로그램이므로 중요한지 확실하지 않습니다.

아무도 멋진 가이드를 알고 있거나 이것을 수행하는 방법에 대한 예제 코드를 제공 할 수 있습니까? 단지 기록을 위해, 나는 리눅스의 휠 뒤에 2 시간 밖에 없기 때문에 리눅스와 관련된 모든 것에 관해서는 매우 초록색이다. UPDATE

은 내가 최대 절전 모드를 사용하고하고있는 hibernate.cfg.xml에 내가 사용

<!-- <Resource name="UserDatabase" auth="Container" 
       type="org.apache.catalina.UserDatabase" 
       description="User database that can be updated and saved" 
       factory="org.apache.catalina.users.MemoryUserDatabaseFactory" 
       pathname="conf/tomcat-users.xml" /> 
--> 

다음과 같은 기본 구성을 찾은 다음

<hibernate-configuration> 
    <session-factory> 
     <property name="hibernate.connection.datasource">jdbc/mydatabase</property> 

위의 리소스를 주석 처리하고 다음을 추가했지만 이것도 작동하지 않습니다. 또한 Tomcat 관리자에게 더 이상 액세스 할 수 없음을 알았습니다.

<Resource type="javax.sql.DataSource" 
      name="jdbc/mydatabase" 
      factory="org.apache.tomcat.jdbc.pool.DataSourceFactory" 
      driverClassName="com.mysql.jdbc.Driver" 
      url="jdbc:mysql://localhost:3306/mysql" 
      username="root" 
      password="password" 
/> 

나는하여의 context.xml 파일

<ResourceLink type="javax.sql.DataSource" 
       name="jdbc/mydatabase" 
       global="jdbc/mydatabase" 

사람이 내가이 구성 잘못된 뭘하는지 알고 있습니까에 다음을 추가?

나는 다음과 같은 예외

받고 있어요

근본 원인

HTTP Status 500 - java.lang.RuntimeException: Exception constructing service 'ValueEncoderSource': Error invoking service 

기여 방법 org.apache.tapestry5.hibernate.HibernateModule.contributeValueEncoderSource (MappedConfiguration, 부울, HibernateSessionSource, 세션, TypeCoercer, PropertyAccess, LoggerSource) : 예외 생성 서비스 'HibernateSessionSource': 생성자 공개 호출 오류 org.apache.tapestry5.internal.hibernate.HibernateSessionSourceImpl (org.slf4j.Logger, java.util.List에) : 이 데이터 소스를 찾을 수 없습니다

javax.naming.NameNotFoundException: Name [jdbc/mydatabase] is not bound in this Context. Unable to find [jdbc]. 
내가 톰캣 6 사용하여 JNDI를 구성

답변

0

하지만, 정확한 구성 설정은 기억이 나지 않지만 JNDI를 사용해야한다는 것이 확실합니다.

+0

@ JeenavDongre이 답변을 알지 못하지만 tomcat이 포함 된 WEB-INF/web.xml에 구성 설정을 추가해야하는 이유에 대해 궁금한 점이 있지만 글래스 피시에서는 필요하지 않습니다. Glassfish에서는 hibernate.cfg.xml 내의 datasource 이외의 응용 프로그램에서 설정없이 GUI를 통해 데이터베이스와 작업하도록 JDBC를 구성 할 수 있습니다. 지역 개발을 위해 부두를 사용하므로 앱 내의 바람둥이 설정으로 인해 부두가 부딪 힐 수 있습니다. 나는 이것이 사실 일지 모르지만, 나의 걱정거리입니다. –

+0

먼저 데이터베이스를 수동으로 구성 할 수있는 GUI가 없습니다. 다음은 그 예입니다. –

0
1. Context configuration 

Configure the JNDI DataSource in Tomcat by adding a declaration for your 
resource to your Context. 

Open the context.xml which is located at the Tomcat configuration (conf) folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat 5.5\conf 

Add the following Resource entry with your database properties. 

</Context> 

-------------------------------------------- 

--------------------------------------------- 

<Resource name="jdbc/Foofys" auth="Container" type="javax.sql.DataSource" 

maxActive="100" maxIdle="30" maxWait="10000" 

username="root" password="pradeep" driverClassName="com.mysql.jdbc.Driver" 

url="jdbc:mysql://localhost:3306/foofys"/> 

</Context> 

Bolded attributes should be as per your database configurations. 

2. web.xml configuration 

Open the context.xml which is located at the Tomcat configuration (conf) folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat 5.5\conf 

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

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

<resource-ref> 

<description>DB Connection</description> 

<res-ref-name>jdbc/Foofys</res-ref-name> 

<res-type>javax.sql.DataSource</res-type> 

<res-auth>Container</res-auth> 

</resource-ref> 

----------------------------------------------- 

------------------------------------------------- 

</web-app> 

3. Copy the My SQL database driver into the tomcat common 
libraries folder. 

For Example: (This path might be differ for your tomcat instance) 

D:\Program Files\Apache Software Foundation\Tomcat5.5\common\lib 

mysql-connector-java-5.1.10.jar 
+0

감사합니다 지반, 오늘 밤까지는 이걸 시험 할 수 없지만 몇 가지 더 빠른 질문이 있습니다. 나는 web.xml이 WEB-INF하에있는 응용 프로그램 내에있는 xml 파일이라고 가정하고 있습니까? tomcat에 web.xml 내에서 resource-ref가 필요한 이유를 알고 싶지만 glassfish에는 필요하지 않은 이유는 무엇입니까? 또한 server.xml보다는 context.xml에서 데이터베이스 연결을 처리하는 것을 보았습니다. 차이점은 무엇입니까? 나는 오늘 저녁에 이것에 소용돌이를 줘서 나중에 두 개 더 질문 할 것입니다. –

0

프로젝트에서 비슷한 문제가 발생했습니다. 아파치 바람둥이의 lib 폴더에 jdbc mysql connector를 놓는 것을 잊어 버렸다. Mysql JDBC Connector

나중에 lib 폴더에 파일을 추가하고 예외를 제거했습니다.