package com.teiid.quickstart.teiid3070; import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.net.InetSocketAddress; import java.util.Properties; import javax.resource.cci.ConnectionFactory; import org.teiid.net.CommunicationException; import org.teiid.net.ConnectionException; import org.teiid.net.HostInfo; import org.teiid.net.TeiidURL; import org.teiid.net.socket.SocketServerConnection; import org.teiid.net.socket.SocketServerConnectionFactory; import org.teiid.net.socket.UrlServerDiscovery; import org.teiid.resource.adapter.file.FileManagedConnectionFactory; import org.teiid.runtime.EmbeddedConfiguration; import org.teiid.runtime.EmbeddedServer; import org.teiid.runtime.EmbeddedServer.ConnectionFactoryProvider; import org.teiid.translator.file.FileExecutionFactory; import org.teiid.transport.SocketConfiguration; import org.teiid.transport.SocketListener; import org.teiid.transport.WireProtocol; public class Teiid3070Server { private MyEmbeddedServer server; private InetSocketAddress addr = new InetSocketAddress(0); SocketListener listener; SocketListener listener1; private SocketServerConnectionFactory sscf; public Teiid3070Server() throws Exception { server = new MyEmbeddedServer(); FileExecutionFactory executionFactory = new FileExecutionFactory(); server.addTranslator("file", executionFactory); FileManagedConnectionFactory fileManagedconnectionFactory = new FileManagedConnectionFactory(); fileManagedconnectionFactory.setParentDirectory("src/file"); ConnectionFactory connectionFactory = fileManagedconnectionFactory.createConnectionFactory(); ConnectionFactoryProvider<ConnectionFactory> connectionFactoryProvider = new EmbeddedServer.SimpleConnectionFactoryProvider<ConnectionFactory>(connectionFactory); server.addConnectionFactoryProvider("java:/marketdata-file", connectionFactoryProvider); SocketConfiguration s1 = new SocketConfiguration(); s1.setBindAddress("127.0.0.1"); s1.setPortNumber(21000); s1.setProtocol(WireProtocol.teiid); SocketConfiguration s2 = new SocketConfiguration(); s2.setBindAddress("127.0.0.1"); s2.setPortNumber(31000); s2.setProtocol(WireProtocol.teiid); EmbeddedConfiguration config = new EmbeddedConfiguration(); config.addTransport(s1); config.addTransport(s2); server.start(config); server.deployVDB(new FileInputStream(new File("src/vdb/marketdata-vdb.xml"))); } public void start() throws Exception { initListener(); SocketServerConnection conn = establishConnection(); System.out.println(conn.isOpen(1000)); listener.stop(); Thread.currentThread().sleep(1000); System.out.println(conn.isOpen(1000)); listener1.stop(); Thread.currentThread().sleep(1000); System.out.println(conn.isOpen(1000)); // BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); // while(true){ // String input = br.readLine(); // if("show".equals(input)) { // for(SocketListener listener : server.getListeners()) { // System.out.println(listener); // } // } else if("stop".equals(input)) { // server.getListeners().get(0).stop(); // System.out.println("Stoped"); // } else if("exit".equals(input)){ // System.exit(0); // } // // } } private SocketServerConnection establishConnection() throws CommunicationException, ConnectionException { // listener1.stop(); Properties p = new Properties(); TeiidURL teiidUrl = new TeiidURL("127.0.0.1", 21000, false); teiidUrl.getHostInfo().add(new HostInfo("127.0.0.1", 31000)); String url = teiidUrl.getAppServerURL(); p.setProperty(TeiidURL.CONNECTION.SERVER_URL, url); p.setProperty(TeiidURL.CONNECTION.DISCOVERY_STRATEGY, UrlServerDiscovery.class.getName()); p.setProperty(TeiidURL.CONNECTION.AUTO_FAILOVER, Boolean.TRUE.toString()); p.setProperty("ApplicationName", "JDBC"); p.setProperty("version", "1"); // p.setProperty("serverURL", "mm://localhost:31000"); p.setProperty("user", "user"); p.setProperty("password", "user"); p.setProperty("VirtualDatabaseVersion", "1"); p.setProperty("VirtualDatabaseName", "Marketdata"); if (sscf == null) { sscf = new SocketServerConnectionFactory(); sscf.initialize(new Properties()); } return sscf.getConnection(p); } private void initListener() { listener = server.getListeners().get(0); listener1 = server.getListeners().get(1); } public static void main(String[] args) throws Exception { new Teiid3070Server().start(); } }