Я пытаюсь перенести свое веб-приложение из окон (используя xampp для apache + mysql) в ubuntu (используя контейнер докеров, поэтому у меня есть два контейнера: один с tomcat и еще один с mysql .. они связаны).Подключить веб-приложение к контейнеру tomcat к контейнеру mysql через hibernate
Относительно этого question, я не могу добраться до контейнера sql. Это кеттин от this image.
Контейнер Tomcat создан на официальном коте: изображение 8.0.
Два контейнера связаны через сеть мостового докера, созданную.
Это веб-приложение, которое предоставляет регистрационную службу login +, проверяя присутствие пользователя в db.
Должен сказать, что на окнах все работает хорошо.
Это мой hibernate.cfg файл:
<!DOCTYPE hibernate-configuration PUBLIC
"-//Hibernate/Hibernate Configuration DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
<session-factory>
<!-- queste configurazioni sono per il testing in locale -->
<property name="connection.driver_class">com.mysql.jdbc.Driver</property>
<property name="connection.url">jdbc:mysql://localhost:49162/AT_DB</property>
<property name="hibernate.connection.username">root</property>
<property name="connection.password">lxit</property>
<!-- JDBC connection pool (use the built-in) -->
<property name="connection.pool_size">1</property>
<!-- SQL dialect -->
<property name="dialect">org.hibernate.dialect.MySQLDialect</property>
<!-- Enable Hibernate's automatic session context management -->
<property name="current_session_context_class">thread</property>
<!-- Disable the second-level cache -->
<property name="cache.provider_class">org.hibernate.cache.NoCacheProvider</property>
<property name="show_sql">false</property>
<!--<property name="hibernate.hbm2ddl.auto">create-drop</property> se al posto di update metto create, mi cancella il db e lo rifa -->
<property name="hbm2ddl.auto">update</property>
<!-- Entity -->
<mapping class="com.ATBoscoCastellano.Entity.ClientUser" />
<mapping class="com.ATBoscoCastellano.Entity.GenericUser" />
<mapping class="com.ATBoscoCastellano.SessionManagement.SessionToken" />
<mapping class="com.ATBoscoCastellano.Entity.Post" />
<!-- <mapping class="it.boscus.StarFoods.entity.ExampleEmbeddableIDClass2" /> -->
</session-factory>
</hibernate-configuration>
После того как я вставляю удостоверение, я нажимаю на "Вход"; то есть сервлет с именем «UserSessionServlet», который проверяет, присутствует ли в db пользователь с этими учетными данными; ошибка появляется, когда я нажимаю логин, потому что UserSessionServlet возвращает ошибку http 500.
[редактировать] На TOMCAT контейнере, я увидел, что журналы говорят мне:
16-Feb-2017 09:43:41.498 SEVERE [http-nio-8080-exec-19] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [com.ATBoscoCastellano.servlets.UserSessionServlet] in context with path [/AtApplicazione1] threw exception [Servlet execution threw an
exception] with root cause
java.lang.NoClassDefFoundError: Could not initialize class com.ATBoscoCastellano.Util.HibernateUtil.HibernateUtil
at com.ATBoscoCastellano.Entity.GenericUser.checkIfUserExistsByEmail(GenericUser.java:198)
at com.ATBoscoCastellano.Entity.ClientUser.validateCredentials(ClientUser.java:259)
at com.ATBoscoCastellano.servlets.UserSessionServlet.doPost(UserSessionServlet.java:78)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:648)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:509)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1104)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:684)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
Но существуют все эти классы, под неавтоматического/кот/WebApps/AtApplicazione1/WEB-INF/классы/ком/AtBoscoCastellano/некоторые/дорожки.
Должен сказать, что я не модифицировал контейнер tomcat с официального изображения (tomcat: 8.0), поэтому я не могу знать, настроен ли он для спящего режима или нет.
Моя война структурирована следующим образом: три папки (META-INF, WEB-INF, шаблон) и файл (.DS_Store). Из-за моего исключения: java.lang.NoClassDefFoundError: Could not initialize class com.ATBoscoCastellano.Util.HibernateUtil.HibernateUtil
, на войне этот класс находится под WEB-INF/classes/com/ATBoscoCastellano/Util/HibernateUtil/... в котором есть HibernateUtil .class и .java.
Когда я CMD Java/JAVAC -version на моем TOMCAT контейнере, его выход:
[email protected]:/opt/tomcat# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)
[email protected]:/opt/tomcat# javac -version
javac "1.8.0_111"
[повторно редактировать]: в моих первых запросов, регистрирует Catalina говорит java.net.ConnectException: Connection refused
; то, со второго запроса, он говорит мне всегда ту же ошибку.
[EDIT] теперь я использую новый контейнер mysql с именем mysql-phpmyadmin
от this. Я связал контейнер tomcat с этим (новым) контейнером; если я укажу, в hibernate.cfg.xml, на localhost:PORT_MYSQL/AT_DB
-> соединение отказано в журнале tomcat. Если я указать на mysql-phpmyadmin:PORT/AT_DB
, журналы Tomcat говорят:
17-Feb-2017 08:31:25.649 SEVERE [http-apr-8080-exec-2] org.apache.catalina.core.StandardWrapperValve.invoke Servlet.service() for servlet [com.ATBoscoCastellano.servlets.UserSessionServlet] in context with path [/AtApplicazione1] threw exception [Servlet execution threw an e
xception] with root cause
java.sql.SQLException: null, message from server: "Host '172.17.0.9' is not allowed to connect to this MySQL server"
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:959)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:898)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:887)
at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1038)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2254)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2285)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2084)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:795)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
Я должен сказать, что в конфигурационном файле в тузде контейнера, есть bind_address 0.0.0.0
Не могли бы вы проверить исключенное исключение из статического блока в 'com.ATBoscoCastellano.Util.HibernateUtil.HibernateUtil'? Это может вызвать NoClassDefFoundError – GauravJ
@GauravJ здесь [http://textuploader.com/d1zpy] есть тело HibernateUtil.java. Я не знаю, почему здесь на контейнерах Tomcat + Mysql это не работает, на WIndows, с Xampp, все работает хорошо. – pier92
Я не могу получить доступ к ссылке. Возможно, что ваши статические инициализаторы терпят неудачу в этой новой комбинации. – GauravJ