Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * This is free software; you can redistribute it and/or modify it
   * under the terms of the GNU Lesser General Public License as
   * published by the Free Software Foundation; either version 2.1 of
   * the License, or (at your option) any later version.
   *
   * This software is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  * Lesser General Public License for more details.
  *
  * You should have received a copy of the GNU Lesser General Public
  * License along with this software; if not, write to the Free
  * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
  * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
  */
 package org.mobicents.servlet.sip.example;
 
 import java.io.File;
 
 import  javax.media.mscontrol.MsControlFactory;
 import  javax.media.mscontrol.spi.DriverManager;
 
 import  org.mobicents.javax.media.mscontrol.spi.DriverImpl;
 import  org.mobicents.jsr309.mgcp.MgcpStackFactory;

Author(s):
Jean Deruelle
 
 public class InitializationListener implements ServletContextListener {
 	private static Logger logger = Logger.getLogger(InitializationListener.class);
 	private static final String AUDIO_DIR = "/audio";
 	private static final String FILE_PROTOCOL = "file://";
 	private static final String[] AUDIO_FILES = new String[] {
 			"AdminReConfirm.wav""OrderApproved.wav""OrderCancelled.wav""OrderConfirmed.wav",
 			"OrderConfirm.wav""OrderDeliveryDate.wav""OrderShipped.wav",
 			"ReConfirm.wav" };
 	
 	Properties properties = null;
 	private static final String MS_CONTROL_FACTORY = "MsControlFactory";
 	public static final String PR_JNDI_NAME = "media/trunk/PacketRelay/$";
 	
 	// Property key for the Unique MGCP stack name for this application
 	public static final String MGCP_STACK_NAME = "mgcp.stack.name";
 
 	// Property key for the IP address where CA MGCP Stack (SIP Servlet
 	// Container) is bound
 	public static final String MGCP_STACK_IP = "mgcp.stack.ip";
 
 	// Property key for the port where CA MGCP Stack is bound
 	public static final String MGCP_STACK_PORT = "mgcp.stack.port";
 
 	// Property key for the IP address where MGW MGCP Stack (MMS) is bound
 	public static final String MGCP_PEER_IP = "mgcp.stack.peer.ip";
 
 	// Property key for the port where MGW MGCP Stack is bound
 	public static final String MGCP_PEER_PORT = "mgcp.stack.peer.port";
In this case MGW and CA are on same local host
 
 	public static final String LOCAL_ADDRESS = System.getProperty(
 			"jboss.bind.address""127.0.0.1");
 	protected static final String CA_PORT = "2728";
 
 	public static final String PEER_ADDRESS = System.getProperty(
 			"jboss.bind.address""127.0.0.1");
 	protected static final String MGW_PORT = "2427";
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see javax.servlet.ServletContextListener#contextDestroyed(javax.servlet.ServletContextEvent)
 	 */	
 	public void contextDestroyed(ServletContextEvent arg0) {
 		MgcpStackFactory.getInstance().clearMgcpStackProvider();
 		
 	}
 
 	/*
 	 * (non-Javadoc)
 	 * 
 	 * @see javax.servlet.ServletContextListener#contextInitialized(javax.servlet.ServletContextEvent)
 	 */	
 	public void contextInitialized(ServletContextEvent servletContextEvent) {
		ServletContext servletContext = servletContextEvent.getServletContext();
		File tempWriteDir = (FileservletContext
				.getAttribute("javax.servlet.context.tempdir");
		servletContext.setAttribute("audioFilePath" + tempWriteDir
		for (int i = 0; i < .i++) {
			String audioFile = [i];
			.info("Writing " + audioFile + " to webapp temp dir : "
tempWriteDir);			
			InputStream is = servletContext.getResourceAsStream( + "/" + audioFile);
			copyToTempDir(istempWriteDiraudioFile);
		Enumeration<StringinitParamNames = servletContext
		.info("Setting init Params into application context");
		while (initParamNames.hasMoreElements()) {
			String initParamName = (StringinitParamNames.nextElement();
			servletContext.setAttribute(initParamNameservletContext
					.getInitParameter(initParamName));
			.info("Param key=" + initParamName + ", value = "
servletContext.getInitParameter(initParamName));
		}
		// map acting as a registrar
		servletContext.setAttribute("registeredUsersMap"new HashMap<StringString>());
		if(servletContextEvent.getServletContext().getAttribute() == null) {
			DriverImpl d = new DriverImpl();
			try {
				// create the Media Session Factory
				MsControlFactory msControlFactory = DriverManager.getDrivers().next().getFactory(
				. = msControlFactory;
				servletContextEvent.getServletContext().setAttribute(msControlFactory);
				String pathToAudioDirectory = (String)servletContextEvent.getServletContext().getAttribute("audioFilePath");
				. = pathToAudioDirectory;
				.info("started MGCP Stack on " +  + "and port " +  + " obj: " + .);
catch (Exception e) {
				.error("couldn't start the underlying MGCP Stack"e);
			}
else {
			.info("MGCP Stack already started on " +  + "and port " + );
		}
	}
	private void copyToTempDir(InputStream isFile tempWriteDir,
			String fileName) {
		File file = new File(tempWriteDirfileName);
		final int bufferSize = 1000;
		BufferedOutputStream fout = null;
		BufferedInputStream fin = null;
		try {
			fout = new BufferedOutputStream(new FileOutputStream(file));
			fin = new BufferedInputStream(is);
			byte[] buffer = new byte[bufferSize];
			int readCount = 0;
			while ((readCount = fin.read(buffer)) != -1) {
				if (readCount < bufferSize) {
					fout.write(buffer, 0, readCount);
else {
					fout.write(buffer);
				}
			}
catch (IOException e) {
			.error("An unexpected exception occured while copying audio files",
							e);
finally {
			try {
				if (fout != null) {
					fout.flush();
					fout.close();
				}
catch (IOException e) {
				.error("An unexpected exception while closing stream",
								e);
			}
			try {
				if (fin != null) {
					fin.close();
				}
catch (IOException e) {
				.error("An unexpected exception while closing stream",
								e);
			}			
		}
	}
New to GrepCode? Check out our FAQ X