MySQL не может соединиться через NamedPipe с Java - PullRequest
0 голосов
/ 03 февраля 2012

Я получил сервер MySQL, принимающий только трубопроводные соединения.

Это выдержка из моего my.ini:

 [client]

 pipe
 socket=mysql

 [mysql]

 default-character-set=utf8


 # SERVER SECTION
 # ----------------------------------------------------------------------
 #
 # The following options will be read by the MySQL Server. Make sure that
 # you have installed the server correctly (see above) so it reads this 
 # file.
 #
 [mysqld]

 skip-networking
 enable-named-pipe

Моему клиенту MySqlWorkbench удается подключиться через именованный канали происходит сбой через TCP / IP, что является ожидаемым поведением.

Моя проблема заключается в том, что мое приложение Java Swing не может подключиться.Он использует Spring 3 и Hibernate 3.2.Я использую сервер Windows 2003, MySQL версии 5.5.

Вот мои компоненты Spring:

<bean id="mySessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="mappingResources">
    <list>
      <value>entries.hbm.xml</value>
    </list>
  </property>

  <property name="hibernateProperties">
    <value>
      hibernate.dialect=org.hibernate.dialect.MySQLDialect
      hibernate.connection.url=jdbc:mysql://localhost/catalog
      hibernate.connection.username=root
      hibernate.connection.password=root
      hibernate.query.substitutions=true 'Y', false 'N'
      hibernate.cache.use_query_cache=true
      hibernate.cache.use_second_level_cache=true
      hibernate.cache.provider_class=org.hibernate.cache.EhCacheProvider
      hibernate.jdbc.batch_size=0
      hibernate.connection.socketFactory=com.mysql.jdbc.NamedPipeSocketFactory
    </value>
  </property>
  <property name="dataSource" ref="myDataSource" />
</bean>

<bean id="myDataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlDataSource">
<!-- I removed user, password and login since i put in hibernate.properties-->
</bean>

В предыдущей версии я также использовал dbcp commons, но у меня была та же проблема, так чточтобы сузить, я удалил его.

Я мог бы заставить вещь работать в TCP / IP, но я хочу использовать именованные каналы.

Согласно документу, чтобы клиент использовалpipe, вы указываете namedPipeFactory и не указываете номер порта в URL.

Я продолжил свои исследования и обнаружил, что если я делаю это:

Class.forName("com.mysql.jdbc.Driver");
Connection connexion = DriverManager.getConnection("jdbc:mysql:///catalogue?socketFactory=com.mysql.jdbc.NamedPipeSocketFactory","root", "root");

, тогда это работает.Это означает, что кажется, что Spring не загружает мои hibernate.properties, что странно, потому что, когда я смотрю на свойства, используемые во время запуска Spring, мои свойства hibernates появляются.Появляется следующая строка журнала: DEBUG org.hibernate.impl.SessionFactoryImpl - создание экземпляра фабрики сеансов со свойствами:

и одним из свойств является hibernate.connection.url = jdbc: mysql: /// catalog? SocketFactory =NamedPipeSocketFactory

Я окончательно не понимаю, что происходит ....

Так что я делаю не так?

Большое спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...