Thanks,

I deleted work and temp directories. Restart showed the same results, work directory was recreated, temp was not.

Jeremi

Kurt T Stam wrote:
Tomcat creates a "temp" and a "work" directory. Try deleting those before restarts if you make changes.
We'll get to the bottom of this :). I'm glad you're up and running!

--Kurt

Jeremi Thebeau wrote:
Hi Kurt,

Switching from Derby to MySQL only seems to work if I reinstall the jUDDI bundle and modify files as per chapter 3 of the User Guide before the first startup. After the first startup, the new data source in the context.xml file does not seem to take. Here are the steps I followed (and to reproduce):

1. fresh install

2. startup

3. run TRegisterBusiness once (same test suite : http://xlt.xceptance.de/download/results/juddi/testsuites/20090731-juddiTestSuite.zip)

4. shutdown: startup Process still running

5. kill -9 <startup process Pid>

6. modify context.xml and persistence.xml:

    context.xml

    <?xml version="1.0" encoding="UTF-8"?>

    <Context>
        <WatchedResource>WEB-INF/web.xml</WatchedResource>
        <!--         <Resource name="jdbc/JuddiDS" auth="Container"
            type="javax.sql.DataSource" username="" password=""
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:juddi-derby-test-db;create=true"
            maxActive="8"
            />
        -->
        <!-- mysql -->
        <Resource name="jdbc/JuddiDS" auth="Container"
type="javax.sql.DataSource" username="juddi" password="XC-rhg4-juddi"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/JUDDI"
            maxActive="8"
            />
               </Context>


changes in persistence.xml <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> --> <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.MySQL5Dialect"/> --> 7. startup

8. run TRegisterBusiness once:
able to get AuthToken but get error when trying to register business (http://xlt.xceptance.de/download/results/juddi/HotDBSwitching/derbyToMysql_TRegisterBusinessError.txt)

9. get juddi.log (http://xlt.xceptance.de/download/results/juddi/HotDBSwitching/derbyToMysql_juddi.log): On the first start up, we see that the derby DB, driver and dialect are being used: 2009-08-06 11:45:17,336 INFO [org.hibernate.connection.DatasourceConnectionProvider] - Using datasource: java:comp/env/jdbc/JuddiDS 2009-08-06 11:45:18,885 INFO [org.hibernate.cfg.SettingsFactory] - RDBMS: Apache Derby, version: 10.1.2.1 2009-08-06 11:45:18,885 INFO [org.hibernate.cfg.SettingsFactory] - JDBC driver: Apache Derby Embedded JDBC Driver, version: 10.1.2.1 2009-08-06 11:45:18,904 INFO [org.hibernate.dialect.Dialect] - Using dialect: org.hibernate.dialect.DerbyDialect

But later on, after the context.xml and persistence.xml files were changed and jUDDI restarted, jUDDI is still using the the derby data source. The MySQL Hibernate dialect is however being used, which of course causes errors: 2009-08-06 12:00:34,001 INFO [org.hibernate.connection.DatasourceConnectionProvider] - Using datasource: java:comp/env/jdbc/JuddiDS 2009-08-06 12:00:35,955 INFO [org.hibernate.cfg.SettingsFactory] - RDBMS: Apache Derby, version: 10.1.2.1 2009-08-06 12:00:35,955 INFO [org.hibernate.cfg.SettingsFactory] - JDBC driver: Apache Derby Embedded JDBC Driver, version: 10.1.2.1 2009-08-06 12:00:35,970 INFO [org.hibernate.dialect.Dialect] - Using dialect: org.hibernate.dialect.MySQLDialect

The first startup after installation (unzipping) seems to permanently define the DS that jUDDI will use. Shouldn't the context.xml be read on every startup and the data source be changed when necessary? Is tomcat somehow making the old DS persist?

But MySQL does fianally work on my system now (after a fresh install).

Let me know what you get if you have time to reproduce.

Thanks

Jeremi

Kurt T Stam wrote:
I changed comment statement in the context.xml, I changed the dialect to MySQL5 and it all works for me.
Can you double check your context.xml?

My logging says:

2009-08-05 12:06:33,236 INFO [org.hibernate.connection.DatasourceConnectionProvider] - Using datasource: java:comp/env/jdbc/JuddiDS 2009-08-05 12:06:33,643 INFO [org.hibernate.cfg.SettingsFactory] - RDBMS: MySQL, version: 5.0.67 2009-08-05 12:06:33,643 INFO [org.hibernate.cfg.SettingsFactory] - JDBC driver: MySQL-AB JDBC Driver, version: mysql-connector-java-5.1.6 ( Revision: ${svn.Revision} ) 2009-08-05 12:06:33,657 INFO [org.hibernate.dialect.Dialect] - Using dialect: org.hibernate.dialect.MySQL5Dialect



Jeremi Thebeau wrote:
It looks like the tables just aren't getting created, often because 'auto_increment' seems to be causing a syntax error.

Here are some excerpts from the juddi.log:

start up while using derby, out-of-the-box;
http://xlt.xceptance.de/download/results/juddi/juddi.log_excerpts/startupUsing_org.hibernate.dialect.DerbyDialect_juddi.log

start up while using mysql;
http://xlt.xceptance.de/download/results/juddi/juddi.log_excerpts/startupUsing_org.hibernate.dialect.MySQLDialect_juddi.log

and I also tried using the org.hibernate.dialect.MySQL*5*Dialect;
http://xlt.xceptance.de/download/results/juddi/juddi.log_excerpts/startupUsing_org.hibernate.dialect.MySQL5Dialect_juddi.log

Is it possible that there is a hibernate/mysql version incompatibility? I'm using MySQL Ver 14.12 Distrib 5.0.75, for debian-linux-gnu.

Any ideas?

Thanks

Jeremi


Kurt T Stam wrote:
No there only needs to be an empty database, and a user with table create rights. You might be able to learn more by looking in the juddi.log on tomcat.

Jeremi Thebeau wrote:
Hi Kurt,

yes I followed the instructions for switching to mysql in chapter 3 except that the URL used to describe the jdbc/JuddiDS resource in context.xml:

url="jdbc:mysql://localhost:3306/JUDDI

since my DB is called "JUDDI" and not "juddiv3".

I can log into mysql with the juddi user and create tables. When I startup juddi the JUDDI DB is empty and after start up I still get:

mysql> show tables;
Empty set (0.00 sec)

Does there need to be a table in there before startup?

Jeremi

Kurt T Stam wrote:
Hi Jeremi,

I think you followed the exact instructions mention in Chapter 3?

http://svn.apache.org/viewvc/webservices/juddi/branches/v3_trunk/docs/jUDDI-UserGuide.pdf?view=co

Does the mysql user have table create permissions and did the mysql tables get created?<property name="hibernate.hbm2ddl.auto" value="update"/>
should take autocreate it, which you have.

--Kurt


Jeremi Thebeau wrote:
Hi,

I'm running the following SNAPSHOT release of juddi:

http://people.apache.org/repo/m2-snapshot-repository/org/apache/juddi/juddi-portal-bundle/3.0.0.SNAPSHOT/juddi-portal-bundle-3.0.0.20090723.201427-7.zip*

*on the following system:

Processor: Intel(R) Core(TM)2 CPU     6400  @ 2.13GHz
RAM: 2011 MB
OS: Ubuntu 9.04, linux kernel 2.6.28-13-generic

Also installed is MySQL Ver 14.12 Distrib 5.0.75, for debian-linux-gnu which has an empty DB called JUDDI for which user ju...@localhost has permissions.

As per the v3 User's Guide I modified the tomcat/webapps/juddi/META-INF/context.xml and tomcat/webapps/juddi/WEB-INF/classes/META-INF/persistence.xml files so they now look like this:

context.xml

<?xml version="1.0" encoding="UTF-8"?>

<Context>
    <WatchedResource>WEB-INF/web.xml</WatchedResource>
    <!--  derby out-of-the-box
    <Resource name="jdbc/JuddiDS" auth="Container"
            type="javax.sql.DataSource" username="" password=""
            driverClassName="org.apache.derby.jdbc.EmbeddedDriver"
            url="jdbc:derby:juddi-derby-test-db;create=true"
            maxActive="8"
            />
    -->
       <!-- mysql -->
    <Resource name="jdbc/JuddiDS" auth="Container"
type="javax.sql.DataSource" username="juddi" password="MyPassword"
            driverClassName="com.mysql.jdbc.Driver"
            url="jdbc:mysql://localhost:3306/JUDDI"
            maxActive="8"
            />
           </Context>


persistence.xml

<?xml version="1.0" encoding="UTF-8"?>
<persistence xmlns="http://java.sun.com/xml/ns/persistence"; xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"; version="1.0"> <persistence-unit name="juddiDatabase" transaction-type="RESOURCE_LOCAL">
    <provider>org.hibernate.ejb.HibernatePersistence</provider>
    <jta-data-source>java:comp/env/jdbc/JuddiDS</jta-data-source>
        <!-- entity classes -->
    <class>org.apache.juddi.model.Address</class>
    <class>org.apache.juddi.model.AddressLine</class>
    <class>org.apache.juddi.model.AuthToken</class>
    <class>org.apache.juddi.model.BindingCategoryBag</class>
    <class>org.apache.juddi.model.BindingDescr</class>
    <class>org.apache.juddi.model.BindingTemplate</class>
    <class>org.apache.juddi.model.BusinessCategoryBag</class>
    <class>org.apache.juddi.model.BusinessDescr</class>
    <class>org.apache.juddi.model.BusinessEntity</class>
    <class>org.apache.juddi.model.BusinessIdentifier</class>
    <class>org.apache.juddi.model.BusinessName</class>
    <class>org.apache.juddi.model.BusinessService</class>
    <class>org.apache.juddi.model.CategoryBag</class>
    <class>org.apache.juddi.model.Contact</class>
    <class>org.apache.juddi.model.ContactDescr</class>
    <class>org.apache.juddi.model.DiscoveryUrl</class>
    <class>org.apache.juddi.model.Email</class>
    <class>org.apache.juddi.model.InstanceDetailsDescr</class>
    <class>org.apache.juddi.model.InstanceDetailsDocDescr</class>
    <class>org.apache.juddi.model.KeyedReference</class>
    <class>org.apache.juddi.model.KeyedReferenceGroup</class>
    <class>org.apache.juddi.model.OverviewDoc</class>
    <class>org.apache.juddi.model.OverviewDocDescr</class>
    <class>org.apache.juddi.model.PersonName</class>
    <class>org.apache.juddi.model.Phone</class>
    <class>org.apache.juddi.model.Publisher</class>
    <class>org.apache.juddi.model.PublisherAssertion</class>
    <class>org.apache.juddi.model.PublisherAssertionId</class>
    <class>org.apache.juddi.model.ServiceCategoryBag</class>
    <class>org.apache.juddi.model.ServiceDescr</class>
    <class>org.apache.juddi.model.ServiceName</class>
    <class>org.apache.juddi.model.ServiceProjection</class>
    <class>org.apache.juddi.model.Subscription</class>
    <class>org.apache.juddi.model.SubscriptionChunkToken</class>
    <class>org.apache.juddi.model.SubscriptionMatch</class>
    <class>org.apache.juddi.model.Tmodel</class>
    <class>org.apache.juddi.model.TmodelCategoryBag</class>
    <class>org.apache.juddi.model.TmodelDescr</class>
    <class>org.apache.juddi.model.TmodelIdentifier</class>
    <class>org.apache.juddi.model.TmodelInstanceInfo</class>
    <class>org.apache.juddi.model.TmodelInstanceInfoDescr</class>
    <class>org.apache.juddi.model.TransferToken</class>
    <class>org.apache.juddi.model.TransferTokenKey</class>
    <class>org.apache.juddi.model.UddiEntity</class>
    <class>org.apache.juddi.model.UddiEntityPublisher</class>
<properties> <property name="hibernate.archive.autodetection" value="class"/>
      <property name="hibernate.hbm2ddl.auto" value="update"/>
      <property name="hibernate.show_sql" value="false"/>

<property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> <!-- for MySQL DB --> <!-- <property name="hibernate.dialect" value="org.hibernate.dialect.DerbyDialect"/> for derby DB -->
          </properties>
  </persistence-unit>
</persistence>

However, when I try to get an AuthToken I get the following org.hibernate.exception.SQLGrammarException.

[14:38:33,045] DEBUG [main] - *Outbound Message*:
HTTP Headers:

Soap Message:
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/";>
    <S:Body>
<get_authToken cred="root" userID="root" xmlns="urn:uddi-org:api_v3" xmlns:ns10="urn:uddi-org:policy_v3_instanceParms" xmlns:ns2="urn:uddi-org:custody_v3" xmlns:ns3="urn:uddi-org:repl_v3" xmlns:ns4="http://www.w3.org/2000/09/xmldsig#"; xmlns:ns5="urn:uddi-org:sub_v3" xmlns:ns6="urn:uddi-org:subr_v3" xmlns:ns7="urn:uddi-org:vscache_v3" xmlns:ns8="urn:uddi-org:policy_v3" xmlns:ns9="urn:uddi-org:vs_v3" />
    </S:Body>
</S:Envelope>

Message Context Properties:
- com.sun.xml.internal.ws.api.message.HeaderList = []
- com.sun.xml.internal.ws.api.server.WSEndpoint = null
- com.sun.xml.internal.ws.client.ContentNegotiation = none
- com.sun.xml.internal.ws.client.handle = JAX-WS RI 2.1.6 in JDK 6: Stub for http://192.168.178.200:8080/juddi/services/security - com.sun.xml.internal.ws.handler.config = com.sun.xml.internal.ws.client.handlerconfigurat...@a16605
- com.sun.xml.internal.ws.server.OneWayOperation = true
- javax.xml.ws.handler.message.outbound = true
- javax.xml.ws.reference.parameters = []
- javax.xml.ws.service.endpoint.address = http://192.168.178.200:8080/juddi/services/security
- javax.xml.ws.soap.http.soapaction.uri = get_authToken
- javax.xml.ws.wsdl.interface = {urn:uddi-org:api_v3_portType}UDDI_Security_PortType - javax.xml.ws.wsdl.port = {urn:uddi-org:api_v3_portType}UDDISecurityServicePort - javax.xml.ws.wsdl.service = {urn:uddi-org:api_v3_portType}UDDISecurityService

[14:38:34,254] DEBUG [main] - *Inbound Message*:
HTTP Headers:
- null = [HTTP/1.1 200 OK]
- Content-type = [text/xml;charset=UTF-8]
- Content-length = [289]
- Server = [Apache-Coyote/1.1]
- Date = [Wed, 05 Aug 2009 12:38:56 GMT]

Soap Message:
<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/";>
    <soap:Header />
    <soap:Body>
        <soap:Fault>
            <faultcode>
                soap:Server
            </faultcode>
            <faultstring>
*org.hibernate.exception.SQLGrammarException: could not insert: [org.apache.juddi.model.Tmodel]*
            </faultstring>
        </soap:Fault>
    </soap:Body>
</soap:Envelope>

Message Context Properties:
- com.sun.xml.internal.ws.api.message.HeaderList = []
- com.sun.xml.internal.ws.api.server.WSEndpoint = null
- com.sun.xml.internal.ws.client.ContentNegotiation = none
- com.sun.xml.internal.ws.client.handle = null
- com.sun.xml.internal.ws.handler.config = com.sun.xml.internal.ws.client.handlerconfigurat...@a16605
- com.sun.xml.internal.ws.server.OneWayOperation = null
- com.xceptance.xlt.ws.handler.requestData = com.xceptance.xlt.api.engine.requestd...@c71c00
- javax.xml.ws.handler.message.outbound = false
- javax.xml.ws.http.response.code = 200
- javax.xml.ws.http.response.headers = {null=[HTTP/1.1 200 OK], Content-type=[text/xml;charset=UTF-8], Content-length=[289], Server=[Apache-Coyote/1.1], Date=[Wed, 05 Aug 2009 12:38:56 GMT]}
- javax.xml.ws.reference.parameters = []
- javax.xml.ws.service.endpoint.address = http://192.168.178.200:8080/juddi/services/security
- javax.xml.ws.soap.http.soapaction.uri = null
- javax.xml.ws.wsdl.interface = {urn:uddi-org:api_v3_portType}UDDI_Security_PortType - javax.xml.ws.wsdl.port = {urn:uddi-org:api_v3_portType}UDDISecurityServicePort - javax.xml.ws.wsdl.service = {urn:uddi-org:api_v3_portType}UDDISecurityService

[14:38:34,332] ERROR [main] - Execution step failed (user: 'TRegisterBusiness-0', output: '1249475907636'): javax.xml.ws.soap.SOAPFaultException: org.hibernate.exception.SQLGrammarException: could not insert: [org.apache.juddi.model.Tmodel] at com.sun.xml.internal.ws.fault.SOAP11Fault.getProtocolException(SOAP11Fault.java:178) at com.sun.xml.internal.ws.fault.SOAPFaultBuilder.createException(SOAPFaultBuilder.java:111) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:108) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107)
    at $Proxy42.getAuthToken(Unknown Source)
at org.apache.juddi.xlt.action.SOAP.GetAuthenticationToken.execute(GetAuthenticationToken.java:48) at com.xceptance.xlt.api.actions.AbstractAction.run(AbstractAction.java:315) at org.apache.juddi.xlt.test.TRegisterBusiness.registerBusiness(TRegisterBusiness.java:37)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:44) at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:15) at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:41) at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:20) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:73) at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:46) at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:180) at org.junit.runners.ParentRunner.access$000(ParentRunner.java:41) at org.junit.runners.ParentRunner$1.evaluate(ParentRunner.java:173) at org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:28) at org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:31)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:220)
at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:45) at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:460) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:673) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:386) at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)

When using juddi with the Derby DB, out-of-the-box, the tomcat/bin/juddi-derby-test-db/ directory is automatically created when running ./startup.sh. I think I am missing the steps that create tables and populate them with the juddi services in my JUDDI database in MySQL. If this should be done manually, what tables are necessary?

Also worth mentioning, the tomcat/bin/juddi-derby-test-db/ directory is still being created and populated even after the modification.

Please help!

Thanks

Jeremi








Reply via email to