# Embedded server example

Attention: Derby Version 10.2 includes JDBC 4.0 functionality based on a pre-release of Java SE 6. When you use Derby with a Java SE 6 virtual machine, Derby will use its JDBC 3.0 drivers, just as with 1.4 and 1.5 virtual machines. JDBC 4.0 is available only to developers who download Java SE 6 and use it to build in support for JDBC 4.0. The Release Notes explain how to build the JDBC 4.0 functionality with Derby Version 10.2. A follow-on Derby release will include JDBC 4.0 functionality based on the final JDBC 4.0 specification once Java SE 6 becomes generally available.

You can start the Network Server in another thread automatically when Derby starts by setting the derby.drda.startNetworkServer property (see Setting Network Server properties), or you can start it by using a program. The following example shows how to start the Network Server by using a program:

    import org.apache.derby.drda.NetworkServerControl;
    import java.net.InetAddress;
    NetworkServerControl server = new NetworkServerControl
    	(InetAddress.getByName("localhost"),1527);
    server.start(null);

The program that starts the Network Server can access the database by using either the embedded driver or the Network Client driver. The server framework's attempt to boot the local JDBC driver is ignored because it has already been booted within the application's JVM. The server framework simply accesses the instance of Derby that is already booted. There is no conflict between the application and the server framework.

The remote client can then connect through the Derby client driver:

    String nsURL="jdbc:derby://localhost:1527/sample";
    java.util.Properties props = new java.util.Properties();
    props.put("user","usr");
    props.put("password","pwd");

    /*
        If you are running on JDK 1.6 or higher, then you do not
        need to invoke Class.forName(). In that environment, the
        EmbeddedDriver loads automatically.
    */
    Class.forName("org.apache.derby.jdbc.ClientDriver").newInstance();
    Connection conn = DriverManager.getConnection(nsURL, props);

    /*interact with Derby*/
    Statement s = conn.createStatement();

    ResultSet rs = s.executeQuery(
    "SELECT * FROM HotelBookings");

Parent topic: Derby in a server framework
Related concepts
Connectivity configurations
Multiple-client features available in Derby
The Derby Network Server
Embedded servers
How to start an embedded server from an application