Tagged: java Toggle Comment Threads | Keyboard Shortcuts

  • Tomás Augusto Müller 6:16 pm on April 28, 2013 Permalink | Reply
    Tags: java, playframework, scala, ,   

    PlayFramework with Spring Data Neo4j 

    Hello!

    Check my sample application using PlayFramework and Spring Data Neo4j.

    This is just a skeleton app, that also features:

    • Neo4j Graph Database
    • Scala and Java integration
    • CDI (javax.inject)
    • Spring
    • Spring Data
    • Spring Data Neo4j

    Sources: https://github.com/tomasmuller/playframework-neo4j-template

    See it live here: http://playframework-neo4j.herokuapp.com/

     
    • Rosalía 6:39 pm on May 16, 2013 Permalink

      hello! I have used your template Play+Spring Data Neo and it woks fine first time you start your server, problems come when you simple change the message in index.scala.html and try to reload to see your new message… it comes and error like this:

      Caused by: java.lang.RuntimeException: org.neo4j.kernel.lifecycle.LifecycleException: Component ‘org.neo4j.kernel.StoreLockerLifecycleAdapter@51f2c9bf’ was successfully initialized, but failed to start. Please see attached cause exception.
      at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:282) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:90) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:75) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:60) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.6.0_45]
      at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39) ~[na:1.6.0_45]
      Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component ‘org.neo4j.kernel.StoreLockerLifecycleAdapter@51f2c9bf’ was successfully initialized, but failed to start. Please see attached cause exception.
      at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:497) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:104) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:260) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:90) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:75) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:60) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      Caused by: org.neo4j.kernel.StoreLockException: Unable to obtain lock on store lock file: target/neo4j-db/store_lock
      at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:90) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:40) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:491) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:104) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:260) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.EmbeddedGraphDatabase.(EmbeddedGraphDatabase.java:90) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      Caused by: java.nio.channels.OverlappingFileLockException: null
      at sun.nio.ch.FileChannelImpl$SharedFileLockTable.checkList(FileChannelImpl.java:1166) ~[na:1.6.0_45]
      at sun.nio.ch.FileChannelImpl$SharedFileLockTable.add(FileChannelImpl.java:1068) ~[na:1.6.0_45]
      at sun.nio.ch.FileChannelImpl.tryLock(FileChannelImpl.java:868) ~[na:1.6.0_45]
      at java.nio.channels.FileChannel.tryLock(FileChannel.java:962) ~[na:1.6.0_45]
      at org.neo4j.kernel.impl.nioneo.store.FileLock.getOsSpecificFileLock(FileLock.java:83) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]
      at org.neo4j.kernel.DefaultFileSystemAbstraction.tryLock(DefaultFileSystemAbstraction.java:83) ~[neo4j-kernel-1.9.RC1.jar:1.9.RC1]

      Any kind of suggestion about how to fix this? I’m having a bad feeling about this, should I really bet on this combination?

      Many Thxs Thomás.

    • Tomás Augusto Müller 8:20 pm on May 16, 2013 Permalink

  • Tomás Augusto Müller 2:09 pm on February 28, 2012 Permalink | Reply
    Tags: benchmark, , , java, JIT, , ,   

    Benchmarking NeoQuotes (Jetty + JRubyRack) 

    To perform basic HTTP benchmarks against a web application, you can start with ab – Apache HTTP server benchmarking tool. speed

    If you use Ubuntu, the installation is very simple:

    sudo apt-get install apache2-utils

    I used this tool to benchmark NeoQuotes application, testing how Jetty with JRuby-Rack are performing against multiple concurrent requests.

    First, start up Jetty with mvn jetty:run or with the command defined in project Procfile (sh target/bin/jruby -S config/jetty.rb for NeoQuotes).

    Next, execute multiple times the following command:

    ab -n 10000 -c 25 http://localhost:8080/

    where n = number of requests and c = concurrency level.

    Is worth to look to the number of requests per second, that are increasing every time the benchmark is executed. This happens thanks to JIT!

    Below some results after running ab -n 10000 -c 25 http://localhost:55012/ three times in a commodity hardware (all tests were performed on the application homepage where there is no interaction with Neo4j and no cache mechanism is configured):

    First execution:

    Time taken for tests:   73.162 seconds
    Requests per second:    136.68 [#/sec] (mean)

    Second execution:

    Time taken for tests:   67.006 seconds
    Requests per second:    149.24 [#/sec] (mean)

    Third execution:

    Time taken for tests:   65.725 seconds
    Requests per second:    152.15 [#/sec] (mean)

    Also, take a look at Min and Max threads of Jetty QueuedThreadPool, at config/jetty.rb configuration.

    Depending of your hardware and your VM configuration,the more threads you configure into min and max, the worse your throughput gets when your VM starts to reach its resource limits.

     
  • Tomás Augusto Müller 9:41 pm on February 13, 2012 Permalink | Reply
    Tags: , heroku, java, , , , , , voice interfaces   

    Talking with Neo4j Graphs 

    Hello!

    In this post I will be covering all main details regarding the development of my entry for the Neo4j Challenge.

    The main objective of this challenge is to create a Heroku-ready template or demo application using Neo4j. So, I neo4j challenge websitethought to myself: – what kind of application would be nice to show up in this contest?

    After many ideas, here it is!  neoquotes logo

    In short, the application is a Stock Exchange symbol lookup using Neo4j and your voice.

    Ok! Let me explain what I did.

    My mainly objective was try to combine all the joy of Ruby programming, with the power and ease of use provided by the awesome Spring Data Neo4j, Spring Framework and JVM, to this amazing piece of software called Neo4j which let me curious since 2011 in the Jim Webber talk at QCONSP conference of that year.qconsp 2011

    So, to start things up, JRuby comes in as a perfect fit. It also allowed me to use Sinatra to easily develop the user interface (both, voice interface and GUI). I choose Sinatra in this case because of it’s simplicity and as long the application stay small, it beat Rails (as said by @DHH).

    Jetty is another very nice (and old) project, which provides a Web server and javax.servlet container, plus support for Web Sockets, OSGi, JMX, JNDI, JASPI, AJP and many other integrations, and can be used to develop self contained applications. In this article from Heroku blog we have a nice introduction to create a Java Web Application using Jetty. Its integration with Maven was also another motivation point.

    Talking about Maven, possibly in POM.xml resides one of the trickiest parts of the application.

    After configuring all the dependencies, aspectj-maven-plugin, jetty-maven-plugin, let’s look to configuration of appassembler-maven-plugin and jruby-rake-plugin:

    jruby-rake-plugin:

    <executions>
        <execution>
            <id>install-bundler</id>
            <phase>process-resources</phase>
            <goals>
                <goal>jruby</goal>
            </goals>
            <configuration>
                <args>-S gem install bundler --no-ri --no-rdoc --install-dir vendor/bundle</args>
            </configuration>
        </execution>
        <execution>
            <id>bundle-install</id>
            <phase>process-resources</phase>
            <goals>
                <goal>jruby</goal>
            </goals>
            <configuration>
                <args>script/bundle install --without development:test</args>
            </configuration>
        </execution>
    </executions>

    As we can see, the plugin execution is responsible for download and install Bundler, then next execute the specified script witch lives in application script folder. This script basically starts Bundler client (pre-configuring ENV['GEM_HOME'], ENV['GEM_PATH'] and ENV['BUNDLE_GEMFILE']), and following the parameters, all gems except the ones for development and test, are installed.

    Last, but not least, the appassembler-maven-plugin:

    <configuration>
        <assembleDirectory>target</assembleDirectory>
        <extraJvmArguments>-Djruby.native.enabled=false -Djruby.cext.enabled=false -Djruby.compat.version=1.9 -Xmx256m -Xss2048k</extraJvmArguments>
        <programs>
            <program>
                <mainClass>org.jruby.Main</mainClass>
                <name>jruby</name>
            </program>
        </programs>
    </configuration>

    Above we have the configuration for the assemble goal execution. The trick here is to generate the executable with JRuby (org.jruby.Main) as main class. And you can also set extra JVM arguments, like the version of Ruby language to use.

    After this brief look into POM.xml, let’s see how Heroku starts Jetty. This is defined in the Procfile:

    web: sh target/bin/jruby -S config/jetty.rb

    So, that’s it! Now our app is running on Heroku Cloud! For more details take a look into /config/jetty.rb to see how Jetty is being started up and /src/main/webapp/WEB-INF/web.xml to see the JRuby-Rack configuration. Other technical details you can find at application readme file.

    Now, let’s talk about Neo4j.

    Your life is a huge graph.

    (…) and I think it can be handled by Neo4j. Back to 2011, Jim Webber let me very

    Ok... not quite a graph. But you get the idea!

    Ok... not quite a graph. But you get the idea!

    interested in Neo4j with his talk at QCONSP 2011. Maybe because in that year I was working on my final graduation project – a recommender system to support fundamental analysis of the Stock Market using natural language processing, and I never forgot of one thing that he said. More or less like this: “MapReduce processing between http requests can be very expensive! Some problems cannot be resolved with this approach.”. Well, I did this. And I must confess: a graph database would have changed a lot my project.

    So, when I discovered this challenge, I decided “- ok, now is the time to take a closer look on Neo4j.”

    First thing I did: accessed Neo4j download page and downloaded the 1.6 Community version.

    After that, the server installation. It is super easy. Just follow this instructions.

    So, what’s next step? Learn, learn and learn!

    I was able to make some initial experiments very fast after a dynamic reading of this *superb* online resource: Good Relationships: The Spring Data Neo4j Guide Book. Thank’s to Michael Hunger, David Montag, Andreas Kollegger by this material.

    Also, I learned a lot from the following links:

    And that’s it. This is the magic of open-source software. Have a doubt of how one given thing work? Go to source code and read it! All you need to get started with Neo4j is this. Trust me ; )

    Giving voice to a graph

    I used Arbor.js library to display the Neo4j data to the user. But how differently the information can be visualized? Through voice interfaces of course!

    As I already worked with Voice Interfaces some years ago (in 2008 actually, when I won the Sun Students Contest. More info here and here), this was not a mystery. Again I used VoiceXML markup language, and the free service provided by Voxeo. Refer to the links above for more information about VoiceXML.

    Who is talking with who? (a high level view of NeoQuotes architecture)

    Who is talking with who? (a high level view of NeoQuotes architecture)

    Sinatra eased this part even more, through it’s easiness of building API’s like applications. All vxml interfaces and grammars are bellow /app/views/voice folder, and there are only two voice routes in application.rb.

    To use the Voxeo service, is simple. You only need to create an account, and after that, set up a new application through Voxeo Application Manager, informing the voice entry point of your application (the full URL to your route. In my case to the get ‘/voice/index.vxml’ route).

    Note that your application need to be accessible by Voxeo server. So don’t forget to git push heroku master, before setting up your app on Voxeo.

    Finishing, you’ll get the numbers to your application. I always tested with Skype VoIP number. Works very well here in Brazil and is totally free.

    You can try calling to NeoQuotes! This is the Skype VoIP number: +990009369996189207 (to see all available numbers for NeoQuotes access the application and click on the respective top nav bar link).

    Important: When you spell the stock symbol, say one letter, and wait the voice repeat what you just said. And go on. When you finish, you can say “Okay!”, “Go!” or “Search!” for example. If your desired symbol have an ‘.‘ you have to say “dot”. The voice will not repeat this (will stay in silence). Just continue with the letters or numbers.

    Summing up

    This demo application contains an interesting stack of technologies, providing an environment to develop robust and testable Neo4j applications, with a lot of fun. Certainly much more can be done and improved. And you can help filling issues and submitting pull requests!

    Please, help voting in this application at Gensen repository or help with a Tweet!

    Thank you Neo4j for running this challenge! It was very fun to participate.

     
    • Jean 4:38 am on November 24, 2012 Permalink

      Thanks for sharing your demo, it is pretty exciting stuff.

  • Lucas Fernando Müller 8:47 pm on February 15, 2011 Permalink | Reply
    Tags: java,   

    Projeto de interface de software 

    Quando deparado com a proposta de mudança na interface de um software, sabendo que essa mudança não está bem estruturada e avaliada pelo usuário final, recomendo que se trabalhe em um protótipo dessa nova interface, para que o usuário final então possa visualizar uma projeção e fazer suas avaliações e apontamentos direcionando melhor o trabalho antes de sua implementação.

    Sugestão

    Neste sentido, uma maneira de tornar prática e dinâmica essa tarefa, é através da utilização de ferramentas de prototipação gerando modelos wireframe e mockups de interfaces. Isso permite concentrar somente nas questões da interface – como exemplo: acessibilidade e usabilidade. Além disso, é possível discutir melhor com o usuário em cima de um modelo wireframe. Caso ele decide mudar alguma coisa, é mais fácil mudar um esboço do que um software pronto (portanto mais rápido e mais barato).

    A procura pela solução

    Assim, em uma pesquisa que realizei em busca deste tipo de software, localizei o WireframeSketcher. Suas características fecharam exatamente com a necessidade que tinha para meus projetos.

    Destaques da ferramenta

    • Pode ser utilizado como um plugin integrado a plataforma Eclipse e para aqueles que não utilizam a IDE, podem optar pela versão standalone – o WireframeSketcher Studio. Oferece suporte para Windows, Linux e Mac.

    Eclipse IDE + Wireframe Sketcher

    • Fácil, prático e rápido de ser utilizado.
    • Curva de aprendizado da ferramenta é bem rápida, sem mistérios. Possui teclas de atalho para manipulação dos componentes que facilitam na construção dos protótipos.
    • Possui um bom desempenho para todo o tamanho de projeto, do pequeno ao grande, permitindo criar módulos que podem ser reaproveitados, onde caso a raiz venha a sofrer alguma alteração ela será automaticamente exibida em todas as demais telas (Master screen).
    • Possui a opção de exportar as telas projetadas para formato PNG e PDF, agilizando a demonstração cross-plataform do projeto.
    • Apresenta ainda um recurso chamado Storyboard, que permite criar uma utilização simulada do projeto da interface, através de links criados a partir dos componentes inseridos nas interfaces.
    • Apresenta um conjunto extenso de componentes o que permite a criação de um variadade grande de projetos de interface, inclusive web e mobile (iPad, iPhone, Android).

    Palette Wireframe Sketcher

    • Permite que o próprio usuário crie novos componentes e crie sua paleta personalizada, podendo ser reutilizada em outros projetos.
    • E para quem utiliza Java há dois utilitários que facilitam o trabalho de projetar novas interfaces com base em outras existentes: swing2mockup e SWT to Mockup, dois plugins que convertem interfaces existentes em Swing e SWT para o formato XML que gera a versão wireframe para o WireframeSketcher.

    Alguns exemplos de projetos

    Abaixo o exemplo de projetos desenvolvidos através do WireframeSketcher que exemplificam suas características: iPhone, iPad.

    iPhone Wireframe

    iPad Wireframe

    O WireframeSketcher é uma ótima ferramenta para a prototipação de interfaces, recomendada!
    Para download e instruções de instalação acesse http://wireframesketcher.com/install.html.

     
  • Tomás Augusto Müller 10:56 pm on July 26, 2010 Permalink | Reply
    Tags: firefox, java, ,   

    Instalação manual do Java Plugin no Firefox (Ubuntu) 

    Localize o diretório de instalação do Firefox, mais precisamente a pasta “firefox-addons/plugins” (normalmente em: /usr/lib/firefox-addons/plugins).

    A JDK contém o plugin para o browser. Está localizado em:

    <JDK>/jre/lib/i386/libnpjp2.so

    Apenas um plugin do java pode ser utilizado pelo navegador. Portanto elimine qualquer link simbólico que aponte para javaplugin-oji.so e libnpjp2.so.

    Feito isso, crie um link simbólico para o plugin distribuído com a JDK, utilizando o comando abaixo:

    /usr/lib/firefox-addons/plugins$ sudo ln -s <JDK>/jre/lib/i386/libnpjp2.so

    Reinicie o Firefox, e digite about:plugins na barra de endereços. Localize o plugin do java, confirmando a instalação.

     
    • Yves 8:45 am on January 19, 2013 Permalink

      Muito obrigado!!!

  • Tomás Augusto Müller 10:36 pm on July 26, 2010 Permalink | Reply
    Tags: java, ,   

    Instalando a Sun JDK 6 no Ubuntu 

    Registro aqui alguns passos para instalação da Sun JDK 6 no Ubuntu (10.04 – lucid), para fins de consulta pessoal. Se foi útil para você, deixe seu registro.

    1. Faça o download do .bin (jdk-6u<version>-linux-i586.bin) no site oficial da Oracle.
    2. Execute o seguinte comando sobre o arquivo: $ chmod a+x jdk-6u<version>-linux-i586.bin
    3. Agora com as devidas permissões configuradas, execute o arquivo: $ ./jdk-6u<version>-linux-i586.bin
    4. Utilizando o comando mv, altere o local dos arquivos extraídos para por exemplo: /usr/local/java/jdk<version>
    5. Crie um link simbólico para este diretório. Ex: /usr/local/java$ ln -s jdk<version>/ jdk
    6. Exclua o arquivo .bin

    Configurar a variável de ambiente $JAVA_HOME:

    Abra o arquivo ~/.profile com o editor de sua preferência e adicione no final do arquivo:

    JAVA_HOME=/usr/local/java/jdk
    export JAVA_HOME
    
    PATH="$JAVA_HOME/bin:$PATH"

    obs.1: repare na utilização do link simbólico na variável de ambiente JAVA_HOME
    obs.2: para executar alguns dos comandos listados serão necessárias permissões de super usuário.

     
  • Tomás Augusto Müller 5:00 pm on January 29, 2009 Permalink | Reply
    Tags: certifications, java, scjp,   

    And now… Java Certified Programmer 

    Hi people out there!!
    I’m writing this post at Porto Alegre, where I did today the SCJP exam for Java 6.

    And?? I passed the exam!
    I answered correctly 68 of the 72 available questions. Which gave me a score of 94%.

    The exam was very dificult. A lot of questions about concurrency, collections (including some of the new Java 1.6 interfaces of collections framework: java.util.NavigableMap, java.util.NavigableSet), generics and API contents (including java.io.Console of Java 1.6).

    All others testing sections are involved in almost all questions, by all the way, like fundamentals of the language, declarations, initialization, scoping and flow control. A bunch of questions about object orientation concepts too.

    Having all this questions, full of little tricks each one, mixed in drag and drop, and multiple choice formats, achieving this certification is a good choice to prove your knowledge about the Java Language, no doubt.

    Now, I will give a small “summer break” (it’s very hot here : ), and enjoy this achievment.

    See you soon!

     
    • Lucas Muller 5:01 pm on February 2, 2009 Permalink

      É isto ai brother!Parabéns por mais essa conquista, muito merecida por todo teu esforço para alcançar esse objetivo!

  • Tomás Augusto Müller 8:04 pm on October 21, 2008 Permalink | Reply
    Tags: contest, , glassfish, java, , opensource, ,   

    Powering what you don’t see with Glassfish and MySQL 

    Have you ever heard about VoiceXML? It’s a W3C standart that allows you to build web pages that are accessed by voice! It’s very used for services like travel tickets selling, hotel reservation, bank account information and so on. In this post, we’ll give you a general view of how to make a basic hotel reservation
    application with VoiceXML and how to run it using Glassfish and MySQL.

    First of all, for VoiceXML applications, we need a voice gateway. We used the Voxeo, it’s free and provides you with phone numbers that you can call for free using Skype. All you need to do is create a free account in Voxeo and register your application by informing it’s URL. After registering you’ll receive the unique phone number for your application.

    We’ll assume you already know the basics of VoiceXML syntax for the rest of this post. If you are completely new to VoiceXML, we recomend you to visit some of these sites:

    How it Works

    The user may use his phone to call to the voice gateway. The voice gateway will interact as a voice browser, saying the output of the VoiceXML application and waiting for user inputs. It’ll use the internet to access the VoiceXML application, that is deployed in a Glassfish V2 UR2 application server for dynamic content generation. The database used to store user information and hotel reservation is a MySQl 5.1 Community edition.

    The Glassfish server recieves the voice gateway http requests, query the MySQL database and returns a web page with the requested information in VoiceXML syntax. Normally it’ll be a form with some input fields that must be filed by the user. The voice gateway then asks for user input and, once it’s finished, the information is sent back to the Glassfish server as a HTTP GET or POST.

    Other option for the user is to access it right from the web. In our hotel reservation example, we allow only the query for hotel reservations.

    Building the Application

    In the Glassfish side, we used the Java Server Pages technology with the Spring framework and iBATIS as the Data Mapper framework. From Spring, we used SpringMVC for the MVC design pattern, SpringORM for Spring Dao pattern and the dependency injection pattern.

    This allowed us to easily create the application with all the functionality we needed. Note that the MVC pattern was applied in the voice application and the acronym still valid. Instead of View we have Voice. For the database modeling, MySQL Workbench was used, a great free tool for this task.

    The database ended looking up like this:

    another MySQL Workbench screenshot, showing the VoiceHotel Database Model

    Once the database is created, you just need to generate the SQL script from MySQL Workbench and execute it with MySQL. The CLI command to do this is:

    mysql -u user -p < script_file.sql

    where user is the database user and -p will ask you for the password.

    Other options is use your IDE for doing this or MySQL Workbench. The main Java IDEs are NetBeans and Eclipse. Both IDEs allows the connection with MySQL and the automatic deployment in Glassfish. Using Eclipse the deployment can be done coding a deploy task in one Ant build file, or using another mechanism like Maven. This makes the application development even faster.

    With MySQL Workbench we have a set of nice and useful features like Import Reverse Engineer MySQL create script for importing a database from script, allowing us to edit this new database, and save these modifications. The databases can be exported using a feature called Forward Engineer SQL CREATE/ALTER script. Another nice thing is the visual insert editor, making a lot easier pre-populate the database with data.

    Deploying the Application

    With the Java and the VoiceXML code ready, we need to put it online. With Glassfish, all you need to do is either, use your IDE to deploy it with one click, or put the .war file in the autodeploy folder.

    Another possibility is make use of Glassfish Admin Console. With one Glassfish “fresh installation” this can be done accessing http://localhost:4848/. Default administrator user name is ‘admin’ and default password for admin user is ‘adminadmin’.

    After logging in, all you need to do is access Web Applications section, click on deploy button, select your war file and that’s it.

    Conclusion

    VoiceXML applications are a great way to give more than one access possibility to a service and using Glassfish and MySQL for developing this applications is incredibly easy. You barely take notice of them :)

    You can access our voice hotel application by calling +990009369996079911 from Skype and visualize the data by accessing http://inf.unisc.br/tmuller/viewDatabaseTableData.voice.

    The project is located at http://voicehotel.dev.java.net and you can download all it’s source codes. More info is located at https://voicehotel.dev.java.net/source/browse/voicehotel/trunk/artifacts/documentation/.

     
c
compose new post
j
next post/next comment
k
previous post/previous comment
r
reply
e
edit
o
show/hide comments
t
go to top
l
go to login
h
show/hide help
shift + esc
cancel
Follow

Get every new post delivered to your Inbox.

%d bloggers like this: