[[chapter-HowToDeployjUDDITo]] == How to deploy jUDDI To? The jUDDI distribution ships preconfigured on Tomcat - it runs out of the box. All you have to do in go into the `juddi-distro-/juddi-tomcat-/bin` directory and start up Tomcat. All of this just as described in <>. By default the `juddiv3.war` is configured to use OpenJPA and CXF. If you want to change your JPA or WS provider, or you'd like to run on a different container then this chapter may come in handy, as there a number of scripted 'profiles' to change the configuration and dependencies in the `juddiv3.war`. To run these maven based scripts you need to go into `juddi-distro-/juddiv3-war` directory. === Tomcat ==== OpenJPA and CXF Target platform Tomcat and Derby using OpenJPA and CXF. Both OpenJPA and CXF are packaged up in the juddiv3.war. ---- mvn clean package -P openjpa ---- Then copy the `target/juddiv3.war` to the `/webapps` directory. ==== Hibernate and CXF Target platform Tomcat and Derby using Hibernate and CXF. Both Hibernate and CXF are packaged up in the juddiv3.war. ---- mvn clean package -P hibernate ---- Then copy the `target/juddiv3.war` to the `/webapps` directory. ==== OpenJPA and Axis2 Target platform Tomcat and Derby using OpenJPA and Apache Axis2. Both Hibernate and Axis2 are packaged up in the juddiv3.war. ---- mvn clean package -P axis2 ---- Then copy the `target/juddiv3.war` to the `/webapps` directory. === JBoss ==== JBossAS 6.0.0.GA This section describes how to deploy juddi to JBoss 6.0.0.GA. First, download jboss-6.0.0.GA - the zip or tar.gz bundle may be found at http://www.jboss.org/jbossas/downloads/. Download the bundle and uncompress it. ===== Hibernate and JBossWS-Native Target platform JBoss-6.x and HSQL using Hibernate and JBossWS-native. The juddiv3.war relies on Hibernate and JBossWS-native in the appserver. ---- mvn clean package -P hibernate-jbossws-native ---- Then copy the `target/juddiv3.war` to the `/server/default/deploy` directory. ===== Hibernate and JBossWS-CXF Target platform JBoss-6.x and HSQL using Hibernate and JBossWS-cxf. The juddiv3.war relies on Hibernate and JBossWS-cxf in the appserver. ---- mvn clean package -P hibernate-jbossws-cxf ---- [knownissues] .KNOWN ISSUES Issue 1:: + ---- 15:14:37,275 SEVERE [RegistryServlet] jUDDI registry could not be started. org.apache.commons.configuration.ConfigurationException: java.util.zip.ZipException: error in opening zip file: org.apache.commons.configuration.ConfigurationException: org.apache.commons.configuration.ConfigurationException: java.util.zip.ZipException: error in opening zip file ---- + Workaround: deploy juddiv3.war as a directory (not a zip file). Issue 2:: + JBoss-5.x Note that configuration 3 and 4 will also run on JBoss-5.x, but you may run into the following + ---- ERROR [org.jboss.ws.metadata.wsdl.xmlschema.JBossXSErrorHandler] (main) [domain:http://www.w3.org/TR/xml-schema-1]::[key=src-resolve]::Message=src-resolve: Cannot resolve the name ns1:Signature to a element declaration component. ---- + Workaround: Unzip the deployers/jbossws.deployer/jbossws-native-core.jar and add the xmldsig-core-schema.xsd in the schema directory, + ---- 10293 Fri May 27 14:40:40 EDT 2011 schema/xmldsig-core-schema.xsd ---- + Edit the file META-INF/jbossws-entities.properties by adding a line at the bottom saying: + ---- http\://www.w3.org/2000/09/xmldsig#=schema/xmldsig-core-schema.xsd ---- Copy juddiv3.war to server/default/deploy and unpack it. Insert jboss-web.xml into the juddiv3.war/WEB-INF directory , should look like the following : ---- jdbc/JuddiDS java:JuddiDS jboss.jdbc:datasource=JuddiDS,service=metadata ---- ===== Change web.xml Replace the WEB-INF/web.xml with the jbossws-native-web.xml within docs/examples/appserver. ===== Configure Datasource The first step for configuring a datasource is to copy your JDBC driver into the classpath. Copy your JDBC driver into ${jboss.home.dir}/server/${configuration}/lib, where configuration is the profile you wish to start with (default, all, etc.). Example : ---- cp mysql-connector-java-5.0.8-bin.jar /opt/jboss-5.1.0.GA/server/default/lib ---- Next, configure a JBoss datasource file for your db. Listed below is an example datasource for MySQL : ---- JuddiDS jdbc:mysql://localhost:3306/juddiv3 com.mysql.jdbc.Driver root org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter mySQL ---- Next, make a few changes to the juddiv3.war/classes/META-INF/persistence.xml. Change the "hibernate.dialect" property to match the database you have chosen for persistence. For MySQL, change the value of hibernate.dialect to "org.hibernate.dialect.MySQLDialect". A full list of dialects available can be found in the hibernate documentation (https://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/package-summary.html). Next, change the tags so that it reads , and change the value from java:comp/env/jdbc/JuddiDS to java:/JuddiDS. ==== JBossAS 7.x/JBossEAP-6.x This section describes how to deploy juddi to JBossAS 7, WildFly and JBossEAP 6 ===== Hibernate and JBossWS-CXF This profile is not yet scripted as there is an issue with Hibernate, see JUDDI-587. ===== OpenJPA and JBossWS-CXF Target platform using HSQL using OpenJPA and JBossWS-CXF. The juddiv3.war relies on the openjpa and cxf modules in the appserver. ---- mvn clean package -P openjpa-jboss7up ---- Then copy the `target/juddiv3.war` to the `/standalone/deployments` directory. Not all the JBoss appservers mentioned above shipped a module for openjpa. If it did not then you can create it: In your appserver create the following directory structure `/modules/system/layers/base/org/apache/openjpa/main` and the following files: .... module.xml openjpa-2.2.1.jar serp-1.13.1.jar .... where the contents of the modules.xml should look like .... .... Next create the directory structure `/modules/system/layers/base/org/jboss/as/jpa/openjpa/main` with the files: .... jboss-as-jpa-openjpa-7.1.1.Final.jar module.xml .... where the contents of the modules.xml should look like .... .... and in the `modules/system/layers/base/org/jboss/as/jpa/main/module.xml add dependency .... .... === Deploying to Glassfish This section describes how to deploy juddi to Glassfish 2.1.1. These instructions will use CXF as a webservice framework. First, download the glassfish-v2.1.1 installer JAR. Once downloaded,install using the JAR and then run the ant setup script : ---- java -jar glassfish-installer-v2.1.1-b31g-linux.jar cd glassfish ant -f setup.xml ---- ==== Glassfish jars Copy the following JARs into domains/domain1/lib/ext. Note that for the purposes of this example, we have copied the MySQL driver to domains/domain1/lib/ext : ---- antlr-2.7.6.jar cglib-nodep-2.1_3.jar commons-collections-3.2.1.jar commons-logging-1.1.jar dom4j-1.6.1.jar hibernate-3.2.5.ga.jar hibernate-annotations-3.3.0.ga.jar hibernate-commons-annotations-3.0.0.ga.jar hibernate-entitymanager-3.3.1.ga.jar hibernate-validator-3.0.0.ga.jar javassist-3.3.ga.jar jboss-common-core-2.0.4.GA.jar jta-1.0.1B.jar mysql-connector-java-5.0.8-bin.jar persistence-api-1.0.jar ---- ==== Configure the JUDDI datasource First, using the asadmin administration tool, import the following file : ---- /lib/dtds/sun-resources_1_3.dtd*"> ---- ---- asadmin add-resources resource.xml ---- Then use the Glassfish administration console to create a "jdbc/juddiDB" JDBC datasource resource based on the mysql-pool Connection Pool. ==== Add juddiv3-cxf.war Unzip the juddiv3-cxf WAR into domains/domain1/autodeploy/juddiv3.war . Add a sun-web.xml file into juddiv3.war/WEB-INF. Make sure that the JNDI references matches the JNDI location you configured in the Glassfish administration console. ---- jdbc/juddiDB jdbc/juddiDB ---- Next, make a few changes to juddiv3.war/WEB-INF/classes/META-INF/persistence.xml . Change the "hibernate.dialect" property to match the database that you have chosen for persistence. For MySQL, change the value of hibernate.dialect to "org.hibernate.dialect.MySQLDialect". A full list of dialects available can be found in the hibernate documentation (https://www.hibernate.org/hib_docs/v3/api/org/hibernate/dialect/package-summary.html). Next, change the change the value from java:comp/env/jdbc/JuddiDS to java:comp/env/jdbc/JuddiDB. ==== Run jUDDI Start up the server : ---- cd bin asadmin start-domain domain1 ---- Once the server is deployed, browse to http://localhost:8080/juddiv3