그래서 Tomcat 6.0.20에서 실행중인 Java Web Start 응용 프로그램에서 MySQL Connector/J 드라이버가 올바르게로드되지 않는 문제가있었습니다. MySQL connector JAR 파일을 webapps // WEB-INF 내의 lib 디렉토리와 Tomcat의 lib 디렉토리에 복사했습니다. 또한 JNLP 파일 내부의 JAR 파일에 대한 참조를 추가했습니다. 조금 연구 한 후에 context.xml 파일 ($ CATALINA_HOME/conf)에 노드를 추가해야한다는 것을 알았습니다. Tomcat 6 구문에 따라이 작업을 수행했습니다. 다음은 XML 파일의 내용입니다 :MySQL 커넥터/J 문제
<Context>
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<!--
<Manager pathname="" />
-->
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
<Resource name="jdbc/MySQLDB" auth="Container" driverClassName="com.mysql.jdbc.Driver"
maxActive="10" maxIdle="1" maxWait="500" type="javax.sql.DataSource"
url="jdbc:mysql://myServerName:3306/myDbName" username="myUserName"
password="myPassword>" />
</Context>
을 그리고 여기가 데이터베이스에 액세스하는 데 사용하고 코드입니다 : 나는 개미를 사용하여 이클립스 또는 SSH에서 코드를 실행하면
Connection con = null;
try {
sb.append("\nAbout to register JDBC driver\n");
Driver driver=new com.mysql.jdbc.Driver();
DriverManager.registerDriver(driver);
sb.append("About to create new instance of mysql jdbc driver\n");
Class.forName("com.mysql.jdbc.Driver").newInstance();
} catch (InstantiationException e) {
sb.append(e.getMessage());
e.printStackTrace();
} catch (IllegalAccessException e) {
sb.append(e.getMessage());
e.printStackTrace();
} catch (ClassNotFoundException e) {
sb.append(e.getMessage());
e.printStackTrace();
} catch (SQLException e) {
sb.append(e.getMessage());
e.printStackTrace();
} catch (Exception e) {
sb.append(e.getMessage());
e.printStackTrace();
} // end try-catch
try {
sb.append("About to create connection using DriverManager\n");
con = DriverManager.getConnection("jdbc:mysql://myServerName:3306/myDbName","myUserName", "myPassword");
// Make sure that connection instance isn't null before creating statement and executing query.
if (con != null) {
sb.append("About to create SQL statement using con.createStatement\n");
Statement st = con.createStatement();
sb.append("About to create ResultSet by executing query");
ResultSet rs = st.executeQuery("SELECT * FROM catissue_user");
sb.append("About to loop through ResultSet\n");
while(rs.next()) {
sb.append(rs.getString(2));
} // end of while
sb.append("\nAbout to close ResultSet, Statement and connection\n");
rs.close();
st.close();
con.close();
} else {
sb.append("There was a problem creating the connection:\n");
} // end if
} catch(SQLException exception) {
sb.append(exception.getMessage());
exception.printStackTrace();
} catch(Exception exception) {
sb.append(exception.getMessage());
exception.printStackTrace();
} // end try-catch
을 , 결과가 정상적으로 반환되므로 연결 URL에 문제가 없다는 것을 알고 있습니다. 그러나 Web Start (jnlp 파일)를 사용하여 실행하면 단추를 클릭해도 JFrame이 열리지 않습니다. 나는 이벤트 리스너에 문제가 없다는 것을 안다. 왜냐하면 코드가 다른 두 가지 방식으로 잘 동작하기 때문이다. 나는 드라이버가 등록 될 때 예외가 발생하지만 그 라인을 포함하지 않으면 "No suitable driver found."라는 오류 메시지가 나타납니다. 이 문제를 해결하기 위해 내가 할 수있는 것에 대한 제안 사항이 있습니까?