Я получил сервер 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
Я окончательно не понимаю, что происходит ....
Так что я делаю не так?
Большое спасибо!