How to install jUDDI on Tomcat by yourself


Hi!

This week I had to install Apache jUDDI for the purpose of the “Knowledge Organization and WEB 3.0” class which is one of my Master’s degree disciplines at PPGI-UFRJ.

When I went to jUDDI‘s web site I discovered that jUDDI have a embeded Apache Tomcat within it. No problem if I hadn’t already installed Tomcat.

Since I wouldn’t like to have 2 running Tomcat installations I decided to install and deploy jUDDI in my existing Tomcat installation. After a few searches in Google I could not find someone who have already done it. That’s why I decided to write this (not so comprehensive) instructions.

Well, since I have already had a running Tomcat installation you will have to install it. It’s very easy. You can find a lot of HOW TOs around. Therefore, I consider the following prerequisites for my step-by-step installation instructions of jUDDI.

Prerequisites:

Having properly installed and configured Java and Tomcat we can now start with the other jUDDI‘s prerequisites.

Step 1 – Install MySQL and create a database for jUDDI
  1. Download and install MySQL Community Server 5.5.14. Choose the MSI installer version;
  2. Now let’s create a user and a database for jUDDI…
  3. Execute the MySQL Command Line Client (It’s in Windows’ Program menu);
  4. Execute these 3 commands: “CREATE USER ‘juddi’@’localhost’ IDENTIFIED BY ‘juddi’;“, “CREATE DATABASE juddi;” and “GRANT ALL PRIVILEGES ON juddi.* TO ‘juddi’@’localhost’;“;
Step 2 – Deploy Apache jUDDI
  1. Download jUDDI portal bundle 3.0.4 and unzip it. Although this zip have an embeded Tomcat installation we won’t use it. We’ll need jus some webapps inside it.
  2. Copy the juddiv3, pluto and juddi-portlets folders (they are located inside the webapps folder in the zip file) to Tomcat‘s webapps folder. Again, just as a reference my webapps folder is in C:\Program Files\apache-tomcat-6.0.29\webapps;
  3. Also copy the following libraries from your zip’s juddi-portal-bundle-3.0.4\lib folder to your existing C:\Program Files\apache-tomcat-6.0.29\webapps folder:
    • castor-1.1.1.jar
    • commons-discovery-0.2.jar
    • commons-logging-1.1.jar
    • pluto-container-1.1.7.jar
    • pluto-descriptor-api-1.1.7.jar
    • pluto-descriptor-impl-1.1.7.jar
    • pluto-taglib-1.1.7.jar
    • portlet-api-1.0.jar
    • log4j-1.2.13.jar
Step 3 – Configure MySQL JNDI Resources in Tomcat
  1. Download MySQL Connector/J 5.1.17 (the official JDBC driver for MySQL) and unzip it. Find the mysql-connector-java-5.1.17-bin.jar file and copy it to the lib folder of your existing Tomcat installation. My Tomcat‘s lib is in C:\Program Files\apache-tomcat-6.0.29\lib;
  2. Open the file C:\Program Files\apache-tomcat-6.0.29\webapps\juddiv3\META-INF\context.xml with any text editor and edit it in order to look like this…
      • <?xml version=”1.0″ encoding=”UTF-8″?>
      • <Context>
      • <WatchedResource>WEB-INF/web.xml</WatchedResource>
      • <Resource
      • name=”jdbc/juddiDB
      • auth=”Container” 
      • type=”javax.sql.DataSource” 
      • username=”juddi” 
      • password=”juddi” 
      • driverClassName=”com.mysql.jdbc.Driver” 
      • url=”jdbc:mysql://localhost:3306/juddi”
      • />
      • </Context>
  3. Now a very important thing. There are 3 other files that must be in synch with the context.xml. The resource name juddiDB must be present in the following files relative to C:\Program Files\apache-tomcat-6.0.29\webapps\juddiv3\WEB-INF\:
    • .\web.xml: Set the value of <res-ref-name> as jdbc/juddiDB;
    • .\classes\juddiv3.properties: Set the property juddi.persistenceunit.name with value juddiDB;
    • .\classes\META-INF\persistence.xml: Set the persistence-unit‘ name to juddiDB, set <non-jta-data-source> value to java:comp/env/jdbc/juddiDB and make sure there is a <property name=”openjpa.jdbc.DBDictionary” value=”mysql“/> element in it.

Step 4 – Add users and roles to Tomcat

  1. Open C:\Arquivos de programas\apache-tomcat-6.0.32\conf\tomcat-users.xml and make sure it looks like this one:

<?xml version=’1.0′ encoding=’utf-8′?>
<tomcat-users>
<role rolename=”pluto“/>
<role rolename=”tomcat”/>
<role rolename=”manager”/>
<user username=”root” password=”root” roles=”pluto,tomcat,manager”/>
<user username=”uddi” password=”uddi” roles=”pluto,tomcat,manager”/>
<user username=”sales” password=”sales” roles=”pluto,tomcat,manager”/>
<user username=”marketing” password=”marketing” roles=”pluto,tomcat,manager”/>
<user username=”tomcat” password=”tomcat” roles=”manager”/>
</tomcat-users>

Step 5 – Enjoy your brand new Registry

Now start Tomcat and open your web browser at http://localhost:8080/juddiv3/. You should see a Apache jUDDI‘s welcome page like this one…
The Apache jUDDI's welcome page
The Apache jUDDI's welcome page

…or like the following one if you click on the jUDDI Portal link

Pluto: The jUDDI portal
Pluto: The jUDDI portal

Now you may for example connect to juddi MySQL database and execute the command “show tables;” just to list all tables created by the jUDDI installation process.

Some very important notes:

  • Of course the instructions on this post are not perfect for a production environment. I installed everything in my windows development sandbox. If you are installing it for a production environment I strongly recommend you not to use the same password as the login name of the MySQL user. Another thing is to change the default jUDDI Authentication.
  • It’s possible to do the same thing for a Linux environment. Just follow the instructions having Linux on your mind;

I’ll talk more about Apache jUDDI Registry on a next post.

Stay away from trouble!

Update at 2011-07-23 23:17

After logging in at Pluto you probably will see that the portlets don’t work. It may print some strack trace errors inside the portlet windows or a javascript alert “erro:null” is shown. To solve this problem you’ll have to do the following:

Make sure the file juddiv3.properties of webapps/juddiv3 and webapps/uddi-portlets have the same configurations. Therefore, copy webapps/juddiv3/WEB-INF/classes/juddiv3.properties to webapps/uddi-portlets/WEB-INF/classes/juddiv3.properties.

42 comentários sobre “How to install jUDDI on Tomcat by yourself

  1. Very very thanks Mr.Marcelo… i followed ur steps and installed the juddi using Derby and MySQL…
    but i want to use my juddi only My SQL database…
    after followed the steps from 1 to 5 and make sure of juddi working,
    i deleted the C:\Program Files\db-derby-10.8.1.2-bin\lib\derby.jar from the lib folder of Tomcat,
    Removed the Resource elemnt “jdbc/JuddiDS” in C:\Program Files\apache-tomcat-6.0.29\conf\Catalina\localhost\juddiv3.xml; and
    changed the persistence-unit’s name from juddiDatabase to juddiDB in C:\Arquivos de programas\juddi-portal-bundle-3.0.4\webapps\juddiv3\WEB-INF\classes\META-INF\persistence.xml( didn’t resets the DERBY_INSTALL variable and it’s CLASS PATH).

    I am getting the following ERROR…

    description The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 59

    56:
    57: <%
    58: // This will trigger the install process…
    59: String rootPartition = AppConfig.getConfiguration().getString(Property.JUDDI_ROOT_PARTITION);
    60: String nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
    61: String nodeName = "";
    62: String nodeDescription = "";

    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:553)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:457)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root cause

    org.apache.openjpa.persistence.ArgumentException: A connection could not be obtained for driver class “org.apache.derby.jdbc.EmbeddedDriver” and URL “jdbc:derby:memory/juddi-derby-test-db;create=true”. You may have specified an invalid URL.
    org.apache.openjpa.jdbc.schema.DataSourceFactory.newConnectException(DataSourceFactory.java:256)
    org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:125)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:691)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:790)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:797)
    org.apache.openjpa.jdbc.schema.SchemaTool.(SchemaTool.java:127)
    org.apache.openjpa.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:310)
    org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:490)
    org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
    org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
    org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
    org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)
    org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
    org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45)
    org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
    org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
    org.apache.juddi.config.AppConfig.(AppConfig.java:62)
    org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
    org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:117)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    root cause

    java.lang.ClassNotFoundException: org.apache.derby.jdbc.EmbeddedDriver
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1676)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1521)
    java.lang.Class.forName0(Native Method)
    java.lang.Class.forName(Class.java:169)
    org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:87)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:691)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:790)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:797)
    org.apache.openjpa.jdbc.schema.SchemaTool.(SchemaTool.java:127)
    org.apache.openjpa.jdbc.meta.MappingTool.newSchemaTool(MappingTool.java:310)
    org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:490)
    org.apache.openjpa.jdbc.meta.MappingTool.record(MappingTool.java:453)
    org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.synchronizeMappings(JDBCBrokerFactory.java:159)
    org.apache.openjpa.jdbc.kernel.JDBCBrokerFactory.newBrokerImpl(JDBCBrokerFactory.java:119)
    org.apache.openjpa.kernel.AbstractBrokerFactory.newBroker(AbstractBrokerFactory.java:189)
    org.apache.openjpa.kernel.DelegatingBrokerFactory.newBroker(DelegatingBrokerFactory.java:142)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:192)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:145)
    org.apache.openjpa.persistence.EntityManagerFactoryImpl.createEntityManager(EntityManagerFactoryImpl.java:56)
    org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:45)
    org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
    org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
    org.apache.juddi.config.AppConfig.(AppConfig.java:62)
    org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
    org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:205)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:117)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:389)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:333)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

    Please help me…. how to work it out…

    Thanks in Advance…

    • Hi anjireddy, how are you?!

      You should not touch in the file
      C:\Program Files\apache-tomcat-6.0.29\conf\Catalina\localhost\juddiv3.xml.

      That’s because it will be created by Tomcat everytime there is a change in the file C:\Program Files\apache-tomcat-6.0.29\webapps\juddiv3\META-INF\context.xml. Therefore delete juddi3.xml and make the changes in C:\Program Files\apache-tomcat-6.0.29\webapps\juddiv3\META-INF\context.xml. Tomcat will create it again when it restarts.

      Let me know if it works. Good luck!

      • Hi Marcelo Fernandes, i am 5n, sorry for the late reply.

        I Followed the instructions as ur updated in the blog, but getting the long error message after testing, by using the browser link http://localhost:8080/juddiv3/:

        description: The server encountered an internal error () that prevented it from fulfilling this request.

        exception:

        org.apache.jasper.JasperException: javax.servlet.ServletException: java.lang.StackOverflowError
        org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:491)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:401)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        root cause

        javax.servlet.ServletException: java.lang.StackOverflowError
        org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:862)
        org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:791)
        org.apache.jsp.index_jsp._jspService(index_jsp.java:180)
        org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
        org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
        org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
        javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        root cause

        java.lang.StackOverflowError
        java.lang.Exception.(Exception.java:59)
        java.lang.ClassNotFoundException.(ClassNotFoundException.java:65)
        java.net.URLClassLoader$1.run(URLClassLoader.java:202)
        java.security.AccessController.doPrivileged(Native Method)
        java.net.URLClassLoader.findClass(URLClassLoader.java:190)
        sun.misc.Launcher$ExtClassLoader.findClass(Launcher.java:229)
        java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        java.lang.ClassLoader.loadClass(ClassLoader.java:296)
        sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        java.lang.ClassLoader.loadClass(ClassLoader.java:248)
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1560)
        org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1491)
        org.apache.log4j.spi.LoggingEvent.(LoggingEvent.java:154)
        org.apache.log4j.Category.forcedLog(Category.java:388)
        org.apache.log4j.Category.error(Category.java:319)
        org.apache.juddi.config.PersistenceManager.initializeEntityManagerFactory(PersistenceManager.java:59)
        org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:94)
        org.apache.juddi.config.AppConfig.(AppConfig.java:62)
        org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
        org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:38)
        org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
        org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)
        org.apache.juddi.config.AppConfig.(AppConfig.java:62)
        org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:183)
        org.apache.juddi.config.PersistenceManager.getEntityManager(PersistenceManager.java:38)
        org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:109)
        org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:95)

        e.t.c….

        i am trying to work hard on it…. if u get the solution.. Let me know.

        Thanks in advance.

      • Hi anjireddy!

        Since the StackOverflow is related to a ClassNotFound error, something is misspelled or missing. Did you solve it already?

  2. After configuring the way you said above, I am getting following error when trying to open below link: http://localhost:8080/juddiv3/

    org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property. org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74) org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784) org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:691) org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:790) org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:797) org.apache.openjpa.jdbc.schema.SchemaTool.(SchemaTool.java:127)

    Any idea how to fix this issue??

  3. I got it…
    juddiv3\META-INF\context.xml somehow is not overriding \conf\context.xml. So, I moved the entry from
    juddiv3\META-INF\context.xml to \conf\context.xml

  4. Hi,

    First of all, thanks for your helpful blog. I’m new on this and I’ve the following lines error in the pluto portal:

    Error rendering portlet.
    org.apache.pluto.PortletContainerException: Unable to obtain the servlet context for the portlet app context path [/uddi-portlets]. Make sure that the portlet app has been deployed, and that cross context support is enabled for the portal app.
    at org.apache.pluto.core.PortletContainerImpl.getPortletAppContext(PortletContainerImpl.java:429)
    at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:155)
    at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:152)
    at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_005fportlet_005f0(portlet_002dskin_jsp.java:105)
    at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:79)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:551)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:488)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:968)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fforEach_005f1(pluto_002ddefault_002dtheme_jsp.java:589)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fotherwise_005f0(pluto_002ddefault_002dtheme_jsp.java:533)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fchoose_005f0(pluto_002ddefault_002dtheme_jsp.java:394)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:227)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:377)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:646)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:436)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:374)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:302)
    at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:151)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:617)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:563)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298)
    at org.apache.coyote.http11.Http11AprProcessor.process(Http11AprProcessor.java:861)
    at org.apache.coyote.http11.Http11AprProtocol$Http11ConnectionHandler.process(Http11AprProtocol.java:579)
    at org.apache.tomcat.util.net.AprEndpoint$Worker.run(AprEndpoint.java:1584)
    at java.lang.Thread.run(Thread.java:662)

    Can you help me?

    Thanks in advanced

  5. Many thanks for your instructions. I did all the things told by you. But im getting the following error,

    description: The server encountered an internal error () that prevented it from fulfilling this request.

    exception

    org.apache.jasper.JasperException: org.apache.openjpa.persistence.PersistenceException: Table ‘juddi.j3_publisher’ doesn’t exist {prepstmnt 30390483 SELECT t0.email_address, t0.is_admin, t0.is_enabled, t0.max_bindings_per_service, t0.max_businesses, t0.max_services_per_business, t0.max_tmodels, t0.publisher_name FROM j3_publisher t0 WHERE t0.authorized_name = ? [params=(String) root]}
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:502)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:430)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    root cause

    org.apache.openjpa.persistence.PersistenceException: Table ‘juddi.j3_publisher’ doesn’t exist {prepstmnt 30390483 SELECT t0.email_address, t0.is_admin, t0.is_enabled, t0.max_bindings_per_service, t0.max_businesses, t0.max_services_per_business, t0.max_tmodels, t0.publisher_name FROM j3_publisher t0 WHERE t0.authorized_name = ? [params=(String) root]}
    org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4246)
    org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4211)
    org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102)
    org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88)
    org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64)
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:283)
    org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
    org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
    org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:913)
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:871)
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:788)
    org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:183)
    org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:452)
    org.apache.juddi.config.Install.alreadyInstalled(Install.java:186)
    org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:127)
    org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:109)
    org.apache.juddi.config.AppConfig.(AppConfig.java:63)
    org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:197)
    org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:219)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:111)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    root cause

    org.apache.openjpa.lib.jdbc.ReportingSQLException: Table ‘juddi.j3_publisher’ doesn’t exist {prepstmnt 30390483 SELECT t0.email_address, t0.is_admin, t0.is_enabled, t0.max_bindings_per_service, t0.max_businesses, t0.max_services_per_business, t0.max_tmodels, t0.publisher_name FROM j3_publisher t0 WHERE t0.authorized_name = ? [params=(String) root]}
    org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.wrap(LoggingConnectionDecorator.java:192)
    org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator.access$700(LoggingConnectionDecorator.java:57)
    org.apache.openjpa.lib.jdbc.LoggingConnectionDecorator$LoggingConnection$LoggingPreparedStatement.executeQuery(LoggingConnectionDecorator.java:852)
    org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:262)
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager$CancelPreparedStatement.executeQuery(JDBCStoreManager.java:1599)
    org.apache.openjpa.lib.jdbc.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:252)
    org.apache.openjpa.jdbc.sql.SelectImpl.executeQuery(SelectImpl.java:509)
    org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:384)
    org.apache.openjpa.jdbc.sql.SelectImpl.execute(SelectImpl.java:325)
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.getInitializeStateResult(JDBCStoreManager.java:503)
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:322)
    org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:278)
    org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111)
    org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57)
    org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:913)
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:871)
    org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:788)
    org.apache.openjpa.kernel.DelegatingBroker.find(DelegatingBroker.java:183)
    org.apache.openjpa.persistence.EntityManagerImpl.find(EntityManagerImpl.java:452)
    org.apache.juddi.config.Install.alreadyInstalled(Install.java:186)
    org.apache.juddi.config.AppConfig.getPersistentConfiguration(AppConfig.java:127)
    org.apache.juddi.config.AppConfig.loadConfiguration(AppConfig.java:109)
    org.apache.juddi.config.AppConfig.(AppConfig.java:63)
    org.apache.juddi.config.AppConfig.getInstance(AppConfig.java:197)
    org.apache.juddi.config.AppConfig.getConfiguration(AppConfig.java:219)
    org.apache.jsp.index_jsp._jspService(index_jsp.java:111)
    org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:388)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    plz plz help me. Im in urgent need of it.

    plz

  6. Hello,

    I did the whole procedure again, but im getting the same error.
    Yes database can be connected
    but no tables are there including juddi.j3_publisher table.

    what to do?

    i need it for my web service project.

    can u help me?

    • Shastry,

      When the error appear? What step it happens?

      Are Tomcat and MySQL running on the same machine? I ask this because the user we have created has permission to just connect from the the same database machine.

      Are you running Windows or Linux?

      Try running MySQL in debug mode adding “–debug” to the startup command. Execute the **whole** process described on the post again and take a look to the MySQL’s log file. You should be able to see juddi trying to connect to the database but not creating the tables.

      Here http://dev.mysql.com/doc/refman/5.0/en/server-logs.html you may find some info about MySQL logging.

  7. Im noticing error when i execute localhost:8080/juddiv3

    Also if i reinstall mysql server and try to create juddi database, it is reporting error saying database already exists. Not getting why it is coming even if its uninstalled.

    Yeah Tomcat and MySQL are running on the same m/c.

    Im running in Windows.

    Ok, Marcelo I will try again.

    Many thanks again for your guidence.

    • The log file is showing ” You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE = innodb’ at line 1 {stmnt 20194674 CREATE TABLE j3_address (id BIGINT NOT NULL, sort_code VARCHAR(10), tmodel_key VARCHAR(255), use_type VARCHAR(255), address_id BIGINT NOT NULL, PRIMARY KEY (id)) TYPE = innodb} “

  8. hummmmm
    Are you running the same version of MySQL and MySQL’s JDBC Driver than the one I wrote on the post?

    • Yes, the same version you wrote, but I Still get the same probleme : “You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE = innodb’ at line 1 {stmnt 20194674 CREATE TABLE j3_address (id BIGINT NOT NULL, sort_code VARCHAR(10), tmodel_key VARCHAR(255), use_type VARCHAR(255), address_id BIGINT NOT NULL, PRIMARY KEY (id)) TYPE = innodb} “

      Please help

      • I get it :
        Go to Step 3, Move jars already copied in “C:\Program Files\apache-tomcat-6.0.29\webapps” folder to “C:\Program Files\apache-tomcat-6.0.29\lib” folder .

        Cheers

    • So the version of either the MySQL or the MySQL’s JDBC driver you are using is not compatible with Juddi. Juddi is sending and SQL command MySQL which is not being recognized.

      I took a look at the MySQL documentation and saw that while MySQL 5.0’s CREATE TABLE syntax has a table option like {ENGINE|TYPE} [=] engine_name, MySQL 5.6’s has ENGINE [=] engine_name. Therefore the TYPE keywork was dropped from 5.0 to 5.6. Since Juddi is TYPE instead of ENGINE it can create the database but not the tables.

      So you’ll have to downgrade your MySQL to 5.0 because it was on 5.1 that the TYPE keyword was dropped and only the ENGINE works.

      • hi, Marcelo.
        I have the same problem. But i have the version of the mysql as the same as yours. why did also say:
        ” You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘TYPE = innodb’ at line 1 {stmnt 20194674 CREATE TABLE j3_address (id BIGINT NOT NULL, sort_code VARCHAR(10), tmodel_key VARCHAR(255), use_type VARCHAR(255), address_id BIGINT NOT NULL, PRIMARY KEY (id)) TYPE = innodb} “

        can you help me? Thanks very much.

  9. Olá Marcelo!

    Segui seu passo a passo, mas por algum motivo quando entro na url localhost:8080/juddiv3/ ele não encontra nada.

    HTTP Status 404 – /juddiv3/
    type Status report
    message /juddiv3/
    description The requested resource (/juddiv3/) is not available.
    Apache Tomcat/6.0.35

    O Tomcat está ativo, pois fiz outro teste com um arquivo de webservice e ele rodou normalmente no tomcat via localhost:8080.

    Obrigado desde já,
    David

    • Oi David,

      Você olhou no log do Tomcat (catalina.out) se na inicialização do próprio tomcat há alguma mensagem de erro? Faça isso, por favor, e depois retorne.

      []’s

      • Olá Marcelo, desculpe pela demora! Descobri que o Tomcat que estava rodando com o Eclipse estava entrando em conflito com o servidor web que tenho no mesmo pc. Agora está normal (pelo menos esta parte rs)

        Obrigado!

  10. Hii Marcelo,
    Thnxs for the tutorial, but i have a problem with the installation, i followed the steps but when i open :http://localhost:8080/juddiv3/ i got this :

    org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 59

    56:
    57: <%
    58: // This will trigger the install process…
    59: String rootPartition = AppConfig.getConfiguration().getString(Property.JUDDI_ROOT_PARTITION);
    60: String nodeId = AppConfig.getConfiguration().getString(Property.JUDDI_NODE_ID);
    61: String nodeName = "";
    62: String nodeDescription = "";

    Stacktrace:
    org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:510)
    org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:419)
    org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:313)
    org.apache.jasper.servlet.JspServlet.service(JspServlet.java:260)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:717)

    cause mère

    org.apache.openjpa.persistence.ArgumentException: A JDBC Driver or DataSource class name must be specified in the ConnectionDriverName property.
    org.apache.openjpa.jdbc.schema.DataSourceFactory.newDataSource(DataSourceFactory.java:74)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.createConnectionFactory(JDBCConfigurationImpl.java:784)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getConnectionFactory(JDBCConfigurationImpl.java:691)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource(JDBCConfigurationImpl.java:790)
    org.apache.openjpa.jdbc.conf.JDBCConfigurationImpl.getDataSource2(JDBCConfigurationImpl.java:797)
    org.apache.openjpa.jdbc.schema.SchemaTool.(SchemaTool.java:127)

    Etc …

    Please help me.
    mwara

    • Hi mwara,

      It seems like jUDDI can not find either the MySQL’s jdbc driver or the resource configuration of ”jdbc/juddiDB“.
      I suggest you to review/redo the whole Step 3.

      Let me know if it works.

      Marcelo.

  11. Thnx for ure answer.

    I did it, and stil have the problem, i even dwngrade mysql to 5.1 and still didn’t work, I have now the same error report as ‘Manoj’ (previous question) i should move the juddiv3\META-INF\context.xml to \conf\context.xml ??

  12. Olá Marcelo, novamente eu aqui hehe. Consegui instalar o jUDDI e tudo mais.. mas agora eu entro no pluto e acontece o seguinte:

    Aparece o topo do Pluto, com os menus e tudo mais, mas no box abaixo aparece o seguinte:

    Error rendering portlet.
    org.apache.pluto.PortletContainerException: Unable to obtain the servlet context for the portlet app context path [/uddi-portlets]. Make sure that the portlet app has been deployed, and that cross context support is enabled for the portal app.
    at org.apache.pluto.core.PortletContainerImpl.getPortletAppContext(PortletContainerImpl.java:429)
    at org.apache.pluto.core.PortletContainerImpl.doRender(PortletContainerImpl.java:155)
    at org.apache.pluto.driver.tags.PortletTag.doStartTag(PortletTag.java:152)
    at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspx_meth_pluto_005fportlet_005f0(portlet_002dskin_jsp.java:115)
    at org.apache.jsp.WEB_002dINF.themes.portlet_002dskin_jsp._jspService(portlet_002dskin_jsp.java:88)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:690)
    at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:599)
    at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:536)
    at org.apache.jasper.runtime.JspRuntimeLibrary.include(JspRuntimeLibrary.java:954)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fforEach_005f0(pluto_002ddefault_002dtheme_jsp.java:457)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fwhen_005f0(pluto_002ddefault_002dtheme_jsp.java:413)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspx_meth_c_005fchoose_005f0(pluto_002ddefault_002dtheme_jsp.java:374)
    at org.apache.jsp.WEB_002dINF.themes.pluto_002ddefault_002dtheme_jsp._jspService(pluto_002ddefault_002dtheme_jsp.java:230)
    at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
    at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
    at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:690)
    at org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:477)
    at org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:402)
    at org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:329)
    at org.apache.pluto.driver.PortalDriverServlet.doGet(PortalDriverServlet.java:151)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
    at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
    at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
    at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
    at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
    at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:581)
    at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
    at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
    at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
    at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
    at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
    at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1001)
    at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
    at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:722)

    😦

    • David, Estou com o mesmo problema.
      Ao copiar os . jar para o lib do Apache ainda continua dando
      “Error rendering portlet.
      org.apache.pluto.PortletContainerException: Unable to obtain the servlet context for the portlet app context path [/uddi-portlets]…..”
      Você teria + alguma dica ou sugestão?? ATT

    • Hi Ratnesh,

      I’m sorry but I don’t have a running jUDDI right now. Let’s wait if anybody will answer. If not I will install a fresh jUDDI and let you know.

      Marcelo

  13. Hi Marcelo,
    Thanks for posting this tutorial.

    I have an issue while configuring the Juddiv3 3.1.3.
    the juddi tomcat bundle does not include the pluto, portal directories.

    i am not sure whether there is a bug with this new version or not but
    the index page has some links broken like “jUDDI Portal” for this version.

    Can you please help me to resolve this.

    Thanks.
    Rahul

Deixar mensagem para Marcelo Carvalho Fernandes Cancelar resposta