Thursday, June 18, 2009

I run my Tomcat, instead I get this "ORACLE DATABASE 10g EXPRESS..." message

You try to run  Apache Tomcat, but instead you  get this message "ORACLE DATABASE 10g EXPRESS EDITION LICENSE AGREEMENT".
This simply means
If you bump into this problem, you have an Oracle 10g Express Edition (OracleXE 10g) installation sitting on the same port as your Tomcat default port (TCP/IP port 8080). As the TCP/IP protocol doesn't allow you to have more than one process listening to the same port (except when you use the advanced channel/selector), then when you start Tomcat, it will fail. You might not be aware that your Tomcat has failed to start, until you get into that message mentioned above.

There are 2 cures to this symptoms, the first cure  is to let Oracle XE take the port, and we move the tomcat installation to another port. The second cure is to set the Oracle XE to use another port.

To achieve the first one, you need to modify your $CATALINA_HOME/conf/server.xml file. Find the portion of the file that contains this snippet (assuming you are using the standard Tomcat installation):

[sourcecode lang="xml"]
connectionTimeout="20000"
redirectPort="8443" />
[/sourcecode]

Change the port 8080 to something else, e.g. 8484.

[sourcecode lang="xml"]
connectionTimeout="20000"
redirectPort="8443" />
[/sourcecode]

By now you should be able to run you application.
Don't forget that you have to run it from port 8484. So if the application you deploy is someapp.war the URL that you aim should be http://localhost:8484/someapp/ instead of http://localhost:8080/someapp/

Ok, now if you want to take the second cure, go to your Oracle XE 10g console using sqlplus. Replace mypassword with that your SYS user password (as specified during the installation process). Note that the number 2, 3, 4 at the left side is generated by the sqlplus tools prompt (you don't need to type them in).

[sourcecode lang="sql"]
C:\> sqlplus sys/mypassword@xe as sysdba
SQL*Plus: Release 10.2.0.1.0 - Production on Thu Jun 18 17:53:47 2009
Copyright (c) 1982, 2005, Oracle. All rights reserved.

Connected to:
Oracle Database 10g Express Edition Release 10.2.0.1.0 - Production

SQL> begin
2 dbms_xdb.sethttpport('8484');
3 end;
4 /
[/sourcecode]

Oracle XE should reply:

[sourcecode lang="sql"]
PL/SQL procedure successfully completed.
[/sourcecode]

After that check to ensure that the configuration has been changed properly:

[sourcecode lang="sql"]
SQL> select dbms_xdb.gethttpport as "HTTP-Port is " from dual;
[/sourcecode]

You should get a message like this:

[sourcecode lang="sql"]
HTTP-Port is
------------
8484
[/sourcecode]

Exit from sqlplus by typing "exit" at the prompt.

If everything as expected, now you can start the Tomcat server and use the port 8080 for Tomcat. To access the Oracle XE 10g database web console, access through http://localhost:8484/apex

17 comments:

  1. perfect! Helped me just right. Thanks.

    ReplyDelete
  2. sure. no problem.
    glad it solved your problem.

    ReplyDelete
  3. Syallom
    my name asta ...
    I would like to get
    please do email me to tell all about the framework
    because I have the task of making the rental application using java language
    nah I have to create a template framework
    I wait for ya replies
    God Bless You

    ReplyDelete
  4. hi asta, will msg you.

    ReplyDelete
  5. Fantastic..
    I was very tired and was getting frustrated about this ... my project deadline is tomorrow.. thanks a lot..

    ReplyDelete
  6. hi sriram,

    glad to hear that it solved your problem.
    good luck with your project!

    daniel

    ReplyDelete
  7. Hi....
    Thanks a lot.. Finally Tomcat is working.

    ReplyDelete
  8. great explanation. thanks!

    ReplyDelete
  9. Thank you so much Dan, this has saved me from hours of frustration.

    ReplyDelete
  10. i got access denied and ora 31050 and ora 06512 error codes while trying second proccedure in oracle 10g on windows7

    ReplyDelete
  11. SQL> begin
    2 dbms_xdb.sethttpport('8483');
    3 end;
    4 /
    begin
    *
    ERROR at line 1:
    ORA-31050: Access denied
    ORA-06512: at "XDB.DBMS_XDB", line 382
    ORA-06512: at "XDB.DBMS_XDB", line 521
    ORA-06512: at line 2


    SQL> select dbms_xdb.gethttpport as "HTTP-Port is " from dual;

    HTTP-Port is
    -------------
    8080

    SQL>

    ReplyDelete
  12. The answer to my question got on following page
    http://www.red-database-security.com/whitepaper/oracle-change-xmldb_port.html

    ReplyDelete
  13. hey i tried 1st method and i change the connection port to 8484. but when i access localhost:8484 its showing
    can't establish a connection to the server at localhost:8484.

    ReplyDelete
  14. i didn't get the tomcat server, how can i change the port number. when i try to attempt tomcat in a browser,i am getting oracle 10g express edition license agreement page in browser.

    please send the detils to my id s.azmath1@gmail.com

    ReplyDelete
  15. My tomcat 7.0 is on port 8080 and oracle 10g XE is on 8081. But when i open it in my browser as"localhost:8081" it shows me a icense agreement with no Accept button. How do it acceptit to proceed further. Please help me out.
    Thanks

    ReplyDelete
  16. Thank you! This helped me to resolve my problem in 5 mins. :)

    ReplyDelete