2011-07-02 123 views
0

我在單個ec2實例上運行tomcat6和mysql5,並且我不能從外部世界中運行。ec2 + tomcat + mysql訪問被拒絕!

我在EC2上的Tomcat的context.xml ...

<bean id="dataSource" class="com.mysql.jdbc.jdbc2.optional.MysqlConnectionPoolDataSource"> 
    <property name="url" value="jdbc:mysql://ec2-xx-xx-xxx-178.compute1.amazonaws.com:3306/data_dbo" /> 
    <property name="user" value="a_user" /> 
    <property name="password" value="a_password" /> 
</bean> 

客戶的context.xml

<bean id="myService" class="org.springframework.remoting.httpinvoker.HttpInvokerProxyFactoryBean"> 
     <property name="serviceUrl" value="http://ec2-xx-xx-xxx-xxx.compute-1.amazonaws.com:8080/MyService-services/remoting/thingServiceExporter"/> 
     <property name="serviceInterface" value="com.things.services.MyService"/> 
    </bean> 

的客戶爲例錯誤...

Caused by: java.sql.SQLException: Access denied for user ''@'domU-xx-xx-xx-xx-xx-DB.compute-1.internal' (using password: NO) 

我設置特權爲我的用戶,但它似乎並沒有使用我的設置在我的tomcat數據源中的用戶。我說這是因爲客戶端出現錯誤(訪問拒絕用戶'@ @)沒有用戶,沒有密碼。 我需要在ec2上的tomcat和mysql之間設置一些東西,因爲它似乎在使用內部dns來訪問MySql?

讓我知道,如果我可以提供任何其他信息!

+1

是否在您的EC2實例上打開了適當的端口? – Nick

+0

很好的問題。是的,我已經打開8080. –

+0

...我可以得到一個servlet連接器的實例。我無法用它做任何事情。 –

回答

1

我發現了這個問題。我的persistance.xml有以下代碼...

<properties> 
     <property name="hibernate.connection.username" value=""/> 
     <property name="hibernate.connection.driver_class" value=""/> 
     <property name="hibernate.connection.password" value=""/> 
     <property name="hibernate.connection.url" value=""/> 
    </properties> 

不知道那是怎麼回事! persistance.xml中的設置必須覆蓋我的Spring上下文文件中的設置。