I am trying to run the examples in the JavaTaminoAPIExamples.jar, and when I go to run the first one (XMLGreeting.java) I keep getting the same error, I know it has to do with my URI, but…forgive me here… I don’t know where to ge thte URI, I installed Tamino my self created a database = my-database as in the documentation… but now I am at a loss…
is the URI: http://localhost/tamino/my-database
because when I do that I get…
Hit uncaught exception com.softwareag.tamino.db.API.connection.TServerNotAvailableException
Nested Exception (com.softwareag.tamino.db.API.invocation.TInvocationException) stacktrace:
Nested Exception (java.lang.reflect.InvocationTargetException) stacktrace:
java.lang.reflect.InvocationTargetException: com.softwareag.tamino.db.API.invocation.TCommunicationException
Server not available for http://localhost/tamino/my-database because of a deeper exception
NestedException without message!
at com.softwareag.tamino.db.API.invocation.http.THTTPInvocation.(THTTPInvocation.java:81)
at com.softwareag.tamino.db.API.invocation.http.THTTPInvocation.(THTTPInvocation.java:93)
at java.lang.reflect.Constructor.newInstance(Native Method)
at com.softwareag.tamino.db.API.invocation.TInvocationFactory.newInvocation(TInvocationFactory.java:79)
at com.softwareag.tamino.db.API.invocation.TInvocationFactory.newInvocation(TInvocationFactory.java:43)
at com.softwareag.tamino.db.API.connection.TConnectionFactory.newConnection(TConnectionFactory.java:47)
at com.softwareag.tamino.db.API.examples.greeting.XMLGreeting.main(XMLGreeting.java:42)…blah , blah , blah…
I know it is something really stupid on my part. I’m usually better than this… the server is running the database is started… do I need to pass a username and password ?
thanks in advance
Rob
Hi Rob,
First some basic information if you please:
What platform/OS is tamino and the web server on and what versions of each?
How do you know that your tamino database is online and the webserver is up?
Are all the necessary daemons started?
Given that your tamino database is called “my-database”, what happens when you use a brower to submit the following URL:
http://localhost/tamino/my-database?_diagnose=ping
Kind regards,
Simon
Please note that there is an underscore between the question mark and the letter “d” of diagnose in the previous URL.
Posting seems to munge some characters!
Simon
HI Simon:
It was way past my bed timelast night… should have included those “little” details, sorry…
O/S: Win2K-pro
Tamino: v 3.1.1.1 (for Win2k),
As for the threads I can only assume that they are started I go into the Management Hub, and physically start the database (my-database) by clicking Start Database. (I wait for all the messages, “Tamino server started correctly” etc…) Am I doing that wrong ?
As for the url in the browser… that was no good , got “page could not be displayed” …
I’ll wait on my next step which is to reinstall it, starting from scratch…to be sure I didn’t screw something up there…
I can’t see what’s wrong from the information you give, but you can try several things.
First open a browser and enter
http://localhost/tamino/my-database?_diagnose=version (Note the underscore before “diagnose”)
If this gives you a reasonable XML answer, which includes the version of the database, then something is wrong with the sample, otherwise something is wrong with the installation of Tamino or the database my-database.
Another thing you could do: Create a database with the name “mydb”, the name which we use in the samples and try to run an unchanged version of the sample.
If this doesn’t help either, please post the source code of your changed sample program.
Hi Rob,
which webserver are you using in conjunction with Tamino?
If you don’t get a response back when trying to access Tamino from a browser, but you see that the database is started in the SMH, then you probably have a problem in the Tamino <-> Webserver configuration…
Cheers,
Trevor.
Thanks, to both of you… I will start fresh again, reinstall… I don’t think it is the code, as it is one of the samples that is provided with the Tamino install. I was wondering though… are the URI’s always
ip/tamino/databasename ? (ie http://127.0.0.1/tamino/databasename).. I’ll let you know how it goes…
Also I am curious as to whot the relationship between the web server and the databse has to do with being able to insert a record into the db, from a java application…
Rob
Hi Rob,
the URI is always as you describe, unless your HTTP server is running on a port other than 80.
If it is running on 82 (for example), the URI will need to include the port number too, such as: ip:port/tamino/database
The current Tamino installation is using a webserver to receive requests via HTTP. The webserver module then communicates with Tamino using an internal Software AG protocol.
The webserver is used like this for reasons like load balancing.
(Lots of people have requested a “webserver-less” installation, so this will be provided in the future.)
The current APIs are basically all working in this manner: build the HTTP request, send it to the webserver, process the HTTP response into something appropriate for the user. (Like an Enumeration, in the case of the Java API.)
So, in order to insert a document into Tamino from a Java application there needs to be a webserver talking to Tamino.
TF.
ok:
here goes…
I have:
1) uninstalled
2) installed apache 2.0.39
3) reinstalled
using:
O/S: WIN2K Pro
JDK: 1.4 (released)
Tamino 3.1.1.1 for WIN2KPro
I ahve run both of the diagnostics that were mentioned - ping, and version I get object not found returned to me…
I am able to use the management hub no problem… I can connect start and stop the database(s)…
I created a database called “mydb” as was suggested by Christian Gengenbach, I have run the sample code once again… same error…
Nested Exception (com.softwareag.tamino.db.API.invocation.TInvocationException) stacktrace:
Nested Exception (java.lang.reflect.InvocationTargetException) stacktrace:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:274)
at com.softwareag.tamino.db.API.invocation.TInvocationFactory.newInvocation(TInvocationFactory.java:79)
at com.softwareag.tamino.db.API.invocation.TInvocationFactory.newInvocation(TInvocationFactory.java:43)
at com.softwareag.tamino.db.API.connection.TConnectionFactory.newConnection(TConnectionFactory.java:47)
at tamino.XMLGreeting.main(XMLGreeting.java:37)
Caused by: com.softwareag.tamino.db.API.invocation.TCommunicationException
Server not available for http://142.166.171.111/tamino/mydb because of a deeper exception
NestedException without message!
at com.softwareag.tamino.db.API.invocation.http.THTTPInvocation.checkAvailableServer(THTTPInvocation.java:271)
at com.softwareag.tamino.db.API.invocation.http.THTTPInvocation.(THTTPInvocation.java:79)
at com.softwareag.tamino.db.API.invocation.http.THTTPInvocation.(THTTPInvocation.java:93)
… 8 more
Exception in thread “main”
here is the code I used to get that error:
package tamino;
/
||
|| The example does the following:
||
|| establishes a connection to the Tamino database
|| obtains an XML accessor
|| inserts a new document of … into ino:etc
|| queries for the inserted document
|| closes the connection
/
import com.softwareag.tamino.db.API.accessor.;
import com.softwareag.tamino.db.API.common.;
import com.softwareag.tamino.db.API.connection.;
import com.softwareag.tamino.db.API.objectModel.;
import com.softwareag.tamino.db.API.objectModel.dom.;
import com.softwareag.tamino.db.API.response.;
import org.jdom.;
import org.jdom.input.;
import java.io.;
public class XMLGreeting {
public static void main(String[] args) throws Exception {
// Put the XML content into a StringReader
StringReader stringReader = new StringReader( XML );
// Instantiate an empty TXMLObject instance related to the DOM object model.
TXMLObject xmlObject = TXMLObject.newInstance( TDOMObjectModel.getInstance() );
// Establish the DOM representation by reading the content from the character input stream.
xmlObject.readFrom( stringReader );
// Establish the Tamino connection.
TConnection connection = TConnectionFactory.getInstance().newConnection(DATABASE_URI,USERNAME,PWD);
// Obtain a TXMLObjectAccessor with a DOM object model.
TXMLObjectAccessor xmlObjectAccessor = connection.newXMLObjectAccessor( TAccessLocation.newInstance( “ino:etc” ),
TDOMObjectModel.getInstance() );
try {
// Invoke the insert operation.
xmlObjectAccessor.insert( xmlObject );
// Show the ino:id of the newly inserted document.
System.out.println( “Insert succeeded, ino:id=” + xmlObject.getId() );
}
catch (TInsertException insertException) {
// Tell about the reason for the failure.
System.out.println( “Insert failed!” );
if ( insertException.hasAccessFailureMessage() )
System.out.println( “Insert rejected by Tamino. Reason:” + insertException.getAccessFailureMessage() );
else
System.out.println( “Insert failed due to following reason:” + insertException.getDeepestException().getMessage() );
}
// Prepare to read the instance.
TQuery query = TQuery.newInstance( xmlObject.getDoctype() + “[@ino:id=” + xmlObject.getId() + “]” );
try {
// Invoke the query operation.
TResponse response = xmlObjectAccessor.query( query );
if ( response.hasFirstXMLObject() ) {
StringWriter stringWriter = new StringWriter();
response.getFirstXMLObject().writeTo( stringWriter );
System.out.println( “Retrieved following instance:” + stringWriter );
}
else
System.out.println( “No instance found!” );
}
catch (TQueryException queryException) {
// Tell about the reason for the failure.
System.out.println( “Query failed!” );
if ( queryException.hasAccessFailureMessage() )
System.out.println( “Query rejected by Tamino. Reason:” + queryException.getAccessFailureMessage() );
else
System.out.println( “Insert failed due to following reason:” + queryException.getDeepestException().getMessage() );
}
// OK, everything is done. Lets close the connection.
connection.close();
}
// Constant for the database URI. Please edit to use your uri of interest.
public final static String DATABASE_URI = “http://127.0.0.1/tamino/mydb”;
//////////////username and pwd if needded///////////////////////////////
public final static String USERNAME = “WHITEHILL\rstote”;
//stars are not real password
public final static String PWD = "******";
///////////////////////////////////////////////////////////////////////////
// Constant for the applications XML message that shall be written to the connected database.
public final static String XML = “Hello World”;
}
sorry guys I am at a loss…
The problem here is the Apache version you are using. Tamino will look for Apache 1.3.x when it installs and if it finds such an installation it will copy ApacheModuleIno.dll to the modules subdirectory of Apache and configure conf/httpd.conf accordingly.
You have Apache 2.0.39 so the installation of tamino will not do anything with this. Therefore when you use http://machine/tamino/…. it will just think its a directory and respond with 404 page not found.
In the downloads section there is a download for supporting Apache 2.0.35 which can be obtained here. However this module will not work with Apache 2.0.39. See this posting for reasons why. According to that thread there should be some updated Apache modules to support 2.0.39 sometime soon.
My recommendation to you is to install apache 1.3.x and configure according to Tamino documentation (you don’t need to reinstall!) or alternatively install Apache 2.0.35 and download the Apache module and configure accordingly.
I looked for documentation on how to configure Apache for Tamino and could not find it… can you point me to them please
No worries! To get to the relevent section:
- start Tamino documentation
- click on Installing Tamino in the “Installation and Getting Started box”
- click on “Configuring Tamino”
- click on “Configuration of Web Servers”
- click on “Apache”
and go from there.
(The HTML document name is HELP\INSTALL\IWCONFIG.HTM under the Tamino version directory).
Thank you Stuart…
I had to reinstall tamino…but once I did that I was able to run my code…
I’m flying…
quick question…
is there a table locking mechanism for Tamino much like there is for Oracle, SQLServer etc… ?
Hi Rob,
Tamino does support transactional operations, and you’ll find quite a lot of information about it in the documentation.
Perhaps the first place to look is in this file:
C:/Program Files/Software AG/Tamino/Tamino 3.1.1.4/Help/ADVCONC/TRANSACTIONS.HTM#Transactions
There is also documentation about using transactions in the API documentation.
Cheers,
Trevor.