Erro de conexão com banco de dados

public class ConnectionFactory {

private final static String DRIVER = "com.mysql.jdbc.Driver";
private final static String URL = "jdbc:mysql://3306/treinamentoti";
private final static String USER = "root";
private final static String PASS = "";

public static Connection getConnection() {
    try {
        Class.forName(DRIVER);
        return DriverManager.getConnection(URL, USER, PASS);
    } catch (ClassNotFoundException | SQLException ex) {
        throw new RuntimeException("Erro na conexão: " + ex);
    }
}

public static void closeConnection(Connection con) {
    try {
        if (con != null) {
            con.close();
        }
    } catch (SQLException ex) {
        JOptionPane.showMessageDialog(null, "ERRO AO SALVAR" + ex);
    }
}

public static void closeConnection(Connection con, PreparedStatement stnt) {
    closeConnection(con);
    try {
        if (stnt != null) {
            stnt.close();
        }
    } catch (SQLException ex) {
        Logger.getLogger(ConnectionFactory.class).log(Level.SEVERE, null, ex);
    }
}

public static void closeConnection(Connection con, PreparedStatement stnt, ResultSet rs) {
    closeConnection(con, stnt);
    try {
        if (rs != null) {
            rs.close();
        }
    } catch (SQLException ex) {
        Logger.getLogger(ConnectionFactory.class).log(Level.SEVERE, null, ex);
    }
}

}
Pessoal alguém sabe o que tem de errado no meu código? Já fiz de tudo e toda vez da o erro:

Exception in thread “AWT-EventQueue-0” java.lang.RuntimeException: Erro na conexão: 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 connection.ConnectionFactory.getConnection(ConnectionFactory.java:24)
at model.dao.participanteDao.create(participanteDao.java:13)
at views.InterfaceInicial.botaoCadastrarActionPerformed(InterfaceInicial.java:353)
at views.InterfaceInicial.access$400(InterfaceInicial.java:13)
at views.InterfaceInicial$5.actionPerformed(InterfaceInicial.java:75)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022)
at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348)
at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)
at java.awt.AWTEventMulticaster.mouseReleased(AWTEventMulticaster.java:289)
at java.awt.Component.processMouseEvent(Component.java:6533)
at javax.swing.JComponent.processMouseEvent(JComponent.java:3324)
at java.awt.Component.processEvent(Component.java:6298)
at java.awt.Container.processEvent(Container.java:2237)
at java.awt.Component.dispatchEventImpl(Component.java:4889)
at java.awt.Container.dispatchEventImpl(Container.java:2295)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4889)
at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4526)
at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4467)
at java.awt.Container.dispatchEventImpl(Container.java:2281)
at java.awt.Window.dispatchEventImpl(Window.java:2746)
at java.awt.Component.dispatchEvent(Component.java:4711)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:90)
at java.awt.EventQueue$4.run(EventQueue.java:731)
at java.awt.EventQueue$4.run(EventQueue.java:729)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:80)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)

Não é obrigado a informar o host???

jdbc:mysql://localhost:3306/treinamentoti

Troque localhost para o IP do servidor, ou deixe localhost se o SGBD estiver rodando na sua máquina.

https://dev.mysql.com/doc/connector-j/8.0/en/connector-j-reference-jdbc-url-format.html

Outra coisa. Verifique se o SGBD está no ar e acessível.

Pela mensagem da exceção, ou é erro na string de conexão ou o banco que não está acessível por não estar no ar ou sendo bloqueado por algum firewall.