# Embedded server example

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