2011-12-01 19 views
6

मैं एक जीडब्ल्यूटी वेब ऐप विकसित कर रहा हूं और अपने रिमोट सेवा सर्विलेट कार्यान्वयन (आरपीसी के लिए) से एक mysql-डेटाबेस से कनेक्ट करने का प्रयास कर रहा हूं।जावा/जीडब्ल्यूटी/MySQL: कनेक्शन से इनकार कर दिया?

सर्वर चलता है और मैं जिस मशीन पर काम करता हूं उससे डेटाबेस से कनेक्ट करने में सक्षम हूं। परीक्षण उद्देश्यों के लिए, मैंने एक छोटा प्रोग्राम लिखा जो केवल डेटाबेस से जुड़ता है। यह काम करता है:

Class.forName("com.mysql.jdbc.Driver"); 
Connection connection = DriverManager.getConnection("jdbc:mysql://192.168.0.106:3306/dbname", "dbuser", "dbpasswd"); 

लेकिन उसी तर्ज स्टैक ट्रेस की लगभग 100 लाइनों के साथ मेरी gwt अनुप्रयोग में विफल रहते हैं, यहाँ "कारण" है:

Caused by: java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.106:3306 connect,resolve) 
at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:408) 
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:269) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294) 
... 55 more 

और अब मेरा सवाल: क्यों?

संपादित करें: परीक्षण के लिए मैं क्रोम और gwt प्लगइन के साथ विकास मोड का उपयोग

EDIT2: कोड का हिस्सा है जहां यह दुर्घटनाओं:

could not establish database connection 
com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure 

The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server. 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) 
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:120) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1116) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:344) 
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2333) 
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2370) 
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2154) 
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:792) 
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:47) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance_(Runtime.java:112) 
at com.google.appengine.tools.development.agent.runtime.Runtime.newInstance(Runtime.java:120) 
at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) 
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:381) 
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:305) 
at java.sql.DriverManager.getConnection(DriverManager.java:582) 
at java.sql.DriverManager.getConnection(DriverManager.java:185) 
at de.eikecochu.gwt.awidb.server.DataLinkImpl.<init>(DataLinkImpl.java:23) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) 
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:362) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
Caused by: java.net.SocketException: java.security.AccessControlException: access denied (java.net.SocketPermission 192.168.0.106:3306 connect,resolve) 
at com.mysql.jdbc.StandardSocketFactory.unwrapExceptionToProperClassAndThrowIt(StandardSocketFactory.java:408) 
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:269) 
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:294) 
... 55 more 
01.12.2011 02:33:09 com.google.appengine.tools.development.ApiProxyLocalImpl log 
SCHWERWIEGEND: javax.servlet.ServletContext log: unavailable 

java.lang.NullPointerException 
at de.eikecochu.gwt.awidb.server.DataLinkImpl.<init>(DataLinkImpl.java:29) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) 
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:362) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 

01.12.2011 02:33:09 com.google.apphosting.utils.jetty.JettyLogger warn 
WARNUNG: /awidb/datalink 
java.lang.NullPointerException 
at de.eikecochu.gwt.awidb.server.DataLinkImpl.<init>(DataLinkImpl.java:29) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) 
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27) 
at java.lang.reflect.Constructor.newInstance(Constructor.java:513) 
at java.lang.Class.newInstance0(Class.java:355) 
at java.lang.Class.newInstance(Class.java:308) 
at org.mortbay.jetty.servlet.Holder.newInstance(Holder.java:153) 
at org.mortbay.jetty.servlet.ServletHolder.initServlet(ServletHolder.java:428) 
at org.mortbay.jetty.servlet.ServletHolder.getServlet(ServletHolder.java:339) 
at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1166) 
at com.google.appengine.tools.development.HeaderVerificationFilter.doFilter(HeaderVerificationFilter.java:35) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.api.blobstore.dev.ServeBlobFilter.doFilter(ServeBlobFilter.java:60) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.apphosting.utils.servlet.TransactionCleanupFilter.doFilter(TransactionCleanupFilter.java:43) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.StaticFileFilter.doFilter(StaticFileFilter.java:122) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at com.google.appengine.tools.development.BackendServersFilter.doFilter(BackendServersFilter.java:97) 
at org.mortbay.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1157) 
at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:388) 
at org.mortbay.jetty.security.SecurityHandler.handle(SecurityHandler.java:216) 
at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:182) 
at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:765) 
at org.mortbay.jetty.webapp.WebAppContext.handle(WebAppContext.java:418) 
at com.google.appengine.tools.development.DevAppEngineWebAppContext.handle(DevAppEngineWebAppContext.java:78) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at com.google.appengine.tools.development.JettyContainerService$ApiProxyHandler.handle(JettyContainerService.java:362) 
at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:152) 
at org.mortbay.jetty.Server.handle(Server.java:326) 
at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:542) 
at org.mortbay.jetty.HttpConnection$RequestHandler.content(HttpConnection.java:938) 
at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:755) 
at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:218) 
at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:404) 
at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:409) 
at org.mortbay.thread.QueuedThreadPool$PoolThread.run(QueuedThreadPool.java:582) 
:

public DataLinkImpl() { 
Connection tmpConnection = null; 
try { 
    Class.forName("com.mysql.jdbc.Driver"); 
    tmpConnection = DriverManager.getConnection("jdbc:mysql://192.168.0.106:3306/dbname", "dbuser", "dbpasswd"); 
} catch (ClassNotFoundException e) { 
    System.err.println("jdbc driver class not found"); 
} catch (SQLException e) { 
    System.err.println("could not establish database connection"); 
    e.printStackTrace(); 
    e.getNextException().printStackTrace(); 
} finally { 
    connection = tmpConnection; 
} 
} 
निम्नलिखित स्टैकट्रेस साथ

संपादित 3: मैंने अपनी/लाइब्रेरी/जावा /.../security/java.policy फ़ाइल को अनुमति दी:

grant { 
    permission java.net.SocketPermission "192.168.0.106:3306", "connect,resolve"; 
} 

लेकिन फिर भी वही, मैं डेटाबेस से कनेक्ट नहीं कर सकता। मैंने इसे सीधे उस मशीन पर निष्पादित करने का प्रयास किया जहां डीबी है, इसलिए मैंने इसे टोमकैट में तैनात किया (वहां वही अनुमति जोड़ा), लेकिन अभी भी नहीं जाना है। WTF ??

edit4:

EntryPoint वर्ग:

package de.eikecochu.gwt.gwttest.client; 

import com.google.gwt.core.client.EntryPoint; 
import com.google.gwt.core.client.GWT; 
import com.google.gwt.event.dom.client.ClickEvent; 
import com.google.gwt.event.dom.client.ClickHandler; 
import com.google.gwt.user.client.rpc.AsyncCallback; 
import com.google.gwt.user.client.ui.Button; 
import com.google.gwt.user.client.ui.Label; 
import com.google.gwt.user.client.ui.RootPanel; 

public class GWTTest implements EntryPoint { 
    private TestServiceAsync testservice = GWT.create(TestService.class); 
    @Override 
    public void onModuleLoad() { 
    Button b = new Button("test"); 
    RootPanel.get("container").add(b); 
    b.addClickHandler(new ClickHandler() { 
     @Override 
     public void onClick(ClickEvent event) { 
     testservice.echo("test", new AsyncCallback<String>() { 
      @Override 
      public void onFailure(Throwable caught) { 
      RootPanel.get("container").add(new Label("error")); 
      } 
      @Override 
      public void onSuccess(String result) { 
      RootPanel.get("container").add(new Label(result)); 
      } 
     }); 
     } 
    }); 
    } 
} 

रिमोट सेवा इंटरफ़ेस:

package de.eikecochu.gwt.gwttest.client; 

import com.google.gwt.user.client.rpc.RemoteService; 
import com.google.gwt.user.client.rpc.RemoteServiceRelativePath; 

@RemoteServiceRelativePath("testservice") 
public interface TestService extends RemoteService { 

    String echo(String s); 

} 

रिमोट सेवा Async इंटरफ़ेस:

इस बात की पुष्टि करने, मैं एक बहुत ही सरल वेब अनुप्रयोग लिखा था
package de.eikecochu.gwt.gwttest.client; 

import com.google.gwt.user.client.rpc.AsyncCallback; 

public interface TestServiceAsync { 

    void echo(String s, AsyncCallback<String> callback); 

} 
,210

RemoteServiceServlet कार्यान्वयन:

package de.eikecochu.gwt.gwttest.server; 

import java.sql.Connection; 
import java.sql.DriverManager; 
import java.sql.SQLException; 

import com.google.gwt.user.server.rpc.RemoteServiceServlet; 

import de.eikecochu.gwt.gwttest.client.TestService; 

public class TestServiceImpl extends RemoteServiceServlet implements 
    TestService { 
    private static final long serialVersionUID = 1L; 

    private final Connection connect() { 
    String driver = "com.mysql.jdbc.Driver"; 
    String dblink = "jdbc:mysql://192.168.0.106:3306/"; 
    String dbname = "dbname"; 
    String dbuser = "dbuser"; 
    String dbpass = "dbpass"; 
    try { 
     Class.forName(driver).newInstance(); 
    } catch (InstantiationException e) { 
     e.printStackTrace(); 
    } catch (IllegalAccessException e) { 
     e.printStackTrace(); 
    } catch (ClassNotFoundException e) { 
     e.printStackTrace(); 
    } 
    Connection conn = null; 
    try { 
     conn = DriverManager.getConnection(dblink + dbname, dbuser, dbpass); 
    } catch (SQLException e) { 
     System.err.println("mysql connection error: "); 
     e.printStackTrace(); 
    } 
    return conn; 
    } 

    @Override 
    public String echo(String s) { 
    Connection c = connect(); 
    return s; 
    } 

} 

यह या तो काम नहीं करता। मेरी मशीन पर नहीं, और स्थानीयहोस्ट पर नहीं (जहां डीबी है)। एक ही त्रुटि फिर से दिखाई देती है (AccessControlException Bla Bla)।

संपादित 5: मैंने अपने ऐप को सीधे अपने सर्वर पर निष्पादित करने का प्रयास किया, जिसका अर्थ है: मैंने सर्वर पर ग्रहण और gwt उपकरण स्थापित किए और क्रोम/विकास मोड में इसे स्थानीय रूप से निष्पादित किया। अभी भी वही त्रुटि। मुझे यह महसूस हो रहा है कि या तो मेरे mysql/ubuntu में गलत कॉन्फ़िगर हैं या मैं कुछ गलत कर रहा हूं, मूल रूप से। आम तौर पर, डेटाबेस से कनेक्ट करना काफी आसान होना चाहिए, हां? मेरा मतलब है, डेटाबेस के बिना वेबसाइट क्या है ...

संपादित 6: जैसा कि बाबा ने सुझाव दिया था, मैंने सिस्टम.सेट सुरक्षा मैनेजर (शून्य) सेट करने की कोशिश की;

डेटाबेस से कनेक्ट करने से ठीक पहले मेरे रिमोट सर्वलेट में।यह निम्न त्रुटि (संक्षिप्त) फेंकता है:

java.security.AccessControlException: access denied (java.lang.RuntimePermission setSecurityManager) 
at java.security.AccessControlContext.checkPermission(AccessControlContext.java:374) 
at java.security.AccessController.checkPermission(AccessController.java:546) 
at java.lang.SecurityManager.checkPermission(SecurityManager.java:532) 
at com.google.appengine.tools.development.DevAppServerFactory$CustomSecurityManager.checkPermission(DevAppServerFactory.java:252) 
at java.lang.System.setSecurityManager0(System.java:273) 
at java.lang.System.setSecurityManager(System.java:264) 

तो ऐसा लगता है कि मैं एक SecurityManager स्थापित की है।

इसके अलावा, मैंने टेलनेट के साथ अपने डेटाबेस तक पहुंचने का प्रयास किया है। सबसे पहले, मेरे कनेक्शन से इनकार कर दिया गया था, लेकिन मैं अपने सर्वर (192.168.0.106) के आईपी करने के लिए अपने mysql-बाँध का पता बदल गया है और यहां चरणों का पालन किया: http://ubuntu-commands.blogspot.com/2008/11/how-do-i-enable-remote-access-to-mysql.html

और जब मैं अब, अजीब प्रतीकों दिखाई telnet 192.168.0.106 3306:

eikes-macbook-air:~ eike$ telnet 192.168.0.106 3306 
Trying 192.168.0.106... 
Connected to eike-server.speedport.ip. 
Escape character is '^]'. 
= 
5.1.58-1ubuntu1(b5|529h~!dYpI\rHP:qKc 

ot packets out of orderConnection closed by foreign host. 

ऐसा लगता है कि यह एक त्रुटि है?

प्लस, मैंने एक्सेसडिनेड त्रुटि की खोज की और यह लिंक पाया: http://code.google.com/p/gwt-examples/wiki/project_MySQLConn#Tomcat_Setup_Notes जो वास्तव में त्रुटि का अनुभव करता है, हालांकि मैं विकास के लिए देवमोड का उपयोग करता हूं। हालांकि इन चरणों का पालन करने में मदद नहीं मिली (मैंने अपनी डिफ़ॉल्ट/लाइब्रेरी /.../security/java.policy फ़ाइल संपादित की)

संपादित 7: मैंने पोस्टग्रेस्क्ल स्थापित किया और कनेक्शन का परीक्षण करने के लिए बस एक बहुत ही सरल डेटाबेस स्थापित किया। जीडब्ल्यूटी के बिना यह ठीक काम करता है, जीडब्ल्यूटी एक ही त्रुटि उत्पन्न करता है। इसलिए, यह मेरी mysql कॉन्फ़िगरेशन की गलती नहीं है। मैंने जावा नीति फ़ाइल के साथ थोड़ा सा खेला, कोई प्रतिक्रिया नहीं। GWT मुझसे नफ़रत करता है: <

edit8: मैं (इस बार Win7) एक और मशीन पर दोनों PostgreSQL और mysql की कोशिश की और मेरे gwt एप्लिकेशन को स्थानीय रूप से (संपादन नीति फ़ाइल के बाद & से पहले) अब भी वही त्रुटि मार डाला। यह अनजाने में जीडब्ल्यूटी की गलती है! ऐसा लगता है कि gwt devmode को कहीं भी करने की अनुमति नहीं है ...

एक और सवाल: त्रुटि स्पष्ट रूप से बताती है "java.security.AccessControlException: एक्सेस अस्वीकार (java.net.SocketPermission localhost संकल्प)", तो क्यों क्या यह तब भी दिखाई देता है जब मैं कनेक्ट करने के लिए अपनी जावा नीति फ़ाइल को संशोधित करता हूं, आवश्यक बंदरगाहों को हल करता हूं? ऐसा लगता है कि बिल्कुल कोई प्रभाव नहीं पड़ा! मैंने ऑलप्रमिशन को अनुदान देने का भी प्रयास किया, कोई प्रभाव नहीं।

Public resources found in... 
[WARN] Error processing classpath URL 'file:/C:/Program Files (x86)/eclipse/plugin/com.google.gdt.eclipse.designer.hosted.2_2_2.4.2.r37x201110201837/gwt-dev-designtime.jar' 
java.net.URISyntaxException: Illegal character in path at index 16: file:/C:/Program Files (x86)/eclipse/plugins/com.google.gdt.eclipse.designer.hosted.2_2_2.4.2.r37x201110201837/gwt-dev-designtime.jar 
at java.net.URI$Parser.fail(Unknown Source) 

मुझे लगता है कि क्या है पता नहीं है या अगर यह महत्वपूर्ण है, लेकिन यह मेरी नहीं है:

इसके बाद, मैं "gwt-log.txt" है, जो लोड हो रहा है इस प्रक्रिया में एक त्रुटि को सूचीबद्ध करता पाया गलती!

+0

आप किस एप्लिकेशन सर्वर का उपयोग कर रहे हैं? –

+0

आपका मतलब विकास मोड है? मैं एक समर्पित सर्वर का उपयोग नहीं करता –

+0

क्या आप पूर्ण स्टैक ट्रेस पोस्ट कर सकते हैं? –

उत्तर

6

आपने Google Eclipse प्लगइन Google App Engine के साथ स्थापित किया है। एक नया जीडब्ल्यूटी परियोजना बनाएं और सुनिश्चित करें कि आप Google App Engine का चयन रद्द करें, और फिर पुनः प्रयास करें। या, अपने ग्रहण वर्गपाथ से सभी जीएई संबंधित जार फ़ाइलों को हटा दें।

GAE Google द्वारा प्रदान किया गया एक होस्टिंग वातावरण है। यह एक बहुत ही सीमित वातावरण है। यह आपको सॉकेट कनेक्शन खोलने या फ़ाइलों को पढ़ने/लिखने की अनुमति नहीं देता है। डाटाबेस ड्राइवर सॉकेट कनेक्शन खोलते हैं, और इसलिए जीएई इसे सुरक्षा अपवाद के साथ अवरुद्ध करता है।

जीडब्ल्यूटी और जीएई Google द्वारा दो अलग-अलग पेशकश हैं, लेकिन ग्रहण प्लगइन एक जैसा है। दुर्भाग्यवश, यह मानता है कि आप अपने प्रोजेक्ट के हिस्से के रूप में दोनों प्रसाद का उपयोग करना चाहते हैं।

+0

का परीक्षण करने के लिए कहीं और एक mysql डीबी स्थापित करें, यह काम करता है, बहुत बहुत धन्यवाद! –

+0

आपके उत्तर ने मेरा दिन बनाया! आप के लिए अच्छा वाइब्स – Kovags

1

ध्यान रखें कि डिफ़ॉल्ट रूप से mysql गैर-लोकहोस्ट इंटरफेस को नहीं सुनता है, तो आपको उन्हें स्वयं खोलना होगा।

+0

लेकिन मैं जावा में अपने mysql डीबी से कनेक्ट करने में सक्षम हूं ... बस जीडब्ल्यूटी में नहीं। –

+0

सबसे पहले, जीडब्ल्यूटी को अनदेखा करें और एक एकल वेबलेट के साथ एक सरल वेब एप्लिकेशन बनाएं जो डेटाबेस से जुड़ता है; अपने कंटेनर में स्थापित करें और परीक्षण करें कि यह ठीक से जुड़ता है। अगर ऐसा होता है, तो जीडब्ल्यूटी को निरंतर करें। यदि ऐसा नहीं होता है, तो समस्या आपके सर्वलेट कंटेनर के साथ है। –

4

मुझे आपकी सुरक्षा प्रबंधक नीति की तरह लगता है कि आप जो कुछ भी कर रहे हैं उसे करने की अनुमति नहीं देते हैं। क्या आप निश्चित हैं कि आपकी java.policy फ़ाइल लागू है? क्या आप 'System.setSecurityManager (शून्य) को कॉल करने का प्रयास कर सकते हैं;' और अपने डीबी से कनेक्ट करने का प्रयास?

यदि सेट करने के लिए कॉल के दौरान सुरक्षा प्रबंधक आपको सुरक्षा अपवाद प्राप्त होता है तो ऐसा लगता है कि आपके पास सुरक्षा प्रबंधक है। इसके अलावा, के रूप में मेरे ऊपर पुरुष ने कहा:

ध्यान रखें कि डिफ़ॉल्ट रूप से mysql गैर स्थानीय होस्ट इंटरफेस के नहीं सुनता रखें, आप उन्हें अपने आप को खोलने के लिए की आवश्यकता होगी।

क्या आप ऊपर दिए गए पते और उपरोक्त बंदरगाह पर टेलनेट करने की कोशिश कर सकते हैं और देख सकते हैं कि सब ठीक है या नहीं?

संपादित करें:

अधिक मैं चीजों को देखने, और अधिक मेरा मानना ​​है कि यह एक MySQL कॉन्फ़िगरेशन समस्या है। क्या आप उसी शुद्ध मशीन से अपना शुद्ध जावा कोड निष्पादित करते हैं जिसने आपने जीडब्ल्यूटी कनेक्शन की कोशिश की? आपका टेलनेट भी असफल होने पर आपका शुद्ध जावा कोड कैसे कनेक्ट हो सकता है? क्या आप उस व्यवहार को दोबारा सत्यापित कर सकते हैं?

+0

मैंने टेलनेट की कोशिश की लेकिन एक अजीब त्रुटि होती है ... परिणाम मेरे संपादन 6 में है। क्या इसका मतलब है कि मेरा mysql डीबी किसी भी तरह पहुंच योग्य नहीं है? हालांकि मैं इसे सामान्य जावा एप्लिकेशन से ठीक से कनेक्ट करने में सक्षम हूं? –

+0

मैं देख सकता हूं कि आपका MySQL 5.1 है। हो सकता है कि आपका जीडब्ल्यूटी आपके जावा टेस्ट से अलग जेडीबीसी ड्राइवर का उपयोग करे। (नवीनतम जेडीबीसी 5.1-18 की तरह है और यह MySQL 5.5 के साथ ठीक काम करता है, 5.1 के साथ सुनिश्चित नहीं है लेकिन ठीक होना चाहिए) –

+0

MySQL डीबी मेरे सर्वर पर है, और मैं अपने लैपटॉप पर विकसित करता हूं। मैंने एक छोटा जावा प्रोग्राम लिखा, जो डेटाबेस, टेबल बनाता है, और फिर उन्हें भर देता है। मेरे लैपटॉप से ​​पूरी तरह से काम करता है। शायद बीमार बस mysql को पुनर्स्थापित करें/ –

संबंधित मुद्दे