Java and encryption - question please...
Hi all,
Does Java provides libraries for encryptions eg DES. or i need to find Dll or alternatively write the whole crap?
any hint, online tips , example will be appreciated.
best regards
rahman
Thanks for quick replies of you guys!!
I really really appreciated.
Mine is jdk 1.4 which means i already have the encryption stuff.
Is there any example available to show usage of one of these encryptions eg DES at all.
will be really appreciated.
regards
rahman
Similar Messages
-
hey. i just restored my iphone and now it says your apple id is disabled then i forgot everything about my email and security questions please help me enable my apple id
i dont think there is another way to unlock my apple but i need toHello there, Th3FoX98.
The following Knowledge Base article is a great resource for what to do if you've forgotten the answers to your Apple ID security questions:
If you forgot the answers to your Apple ID security questions
http://support.apple.com/kb/HT6170
Thanks for reaching out to Apple Support Communities.
Cheers,
Pedro. -
I'm new to java and need help please(repost)
I have an assignment involves modifying a previous assignment. the code for the previous assigment is shown below.(it was required to be done as an applet this assigment can be an application or an applet) I'm trying to modify this code to read a text file (items.txt) that looks like this:
item # description price(this line does not appear in the text file)
001 shaving cream 400.00
999 razors 30.00
I need to load the item# and price from the text file into arrays(I have no clue how to use multi-dimensional arrays in java and would prefer not to)
I need to search the arrays based on the values entered by the user (item # and quantity) calculate the total for that item then create a new text file which has each line item for that order in the form:
item# quant price per item total(price per item*quant entered)
also also I need to be able to display the four items listed above after each loop as well as all the previous item number and quantities they selected until they indicate they don't want to select anymore.
I've been working on this for days and it seems like nothing I try works. My major problems are:
1. I have no idea how to read the text file and load those 2 items into their respective arrays
2. I can't seem to create a textfile that looks like text for the output file.
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.Locale;
public class arraySelection
extends JApplet {
//Initialize the applet
private Container getContentPane=null;
public void init() {
String string_item, string_quantity;
String output = "";
String description= "";
int counter= 0;
int itemNumber= 0;
double quantity = 0 ;
double tax_rate=.07;
double total= 0, price= 0;
double tax, subtotal;
double Pretotal= 0;
double priceArray[] = {1, .5, 3.65, 0.02, 0.09};
String descriptionArray[] = {"salt", "pepper", "paprika", "garlic", "thyme"};
// create number format for currency in US dollar format
NumberFormat moneyFormat = NumberFormat.getCurrencyInstance( Locale.US );
//format to have the total with two digits precision
DecimalFormat twoDigits = new DecimalFormat("0.00");
//Jtextarea to display results
JTextArea outputArea = new JTextArea ();
// get applet's content pane
Container container = getContentPane ();
//attach output area to container
container.add(outputArea);
//set the first row of text for the output area
output += "Invoice\nItem#\tDescription\tQuant@Price\t Line Total" + "\n";
do //begin loop structure obtain input from user
// obtain item number from user
string_item = JOptionPane.showInputDialog(
"Please enter an item number 1, 2, 3, 4, or 5:");
//obtain quantity of each item that user enter
string_quantity = JOptionPane.showInputDialog("Enter the quantity:");
// convert numbers from type String to Integer or Double
itemNumber = Integer.parseInt(string_item);
quantity = Double.parseDouble(string_quantity);
switch (itemNumber) {//Determine input from user to assign price and description
case 10: // user input item =10
price = priceArray[0];
description = descriptionArray[0];
break;
case 20: // user input item =20
price = priceArray [1];
description = descriptionArray[1];
break;
case 30: //user input item =30
price=priceArray[2];
description = descriptionArray[2];
break;
case 40: //user input item =40
price=priceArray[3];
description = descriptionArray[3];
break;
case 50: //user input item =50
price=priceArray[4];
description = descriptionArray[4];
break;
default: // user input item is not on the list
output += "Invalid value entered"+ "\n";
price=0;
description= "";
//Calculates the total for each item number and stores it in subtotal
subtotal = price * quantity;
//display input from user
output += itemNumber + "\t" + description + "\t\t"+ quantity + "@" +
moneyFormat.format( price) + "\t" + moneyFormat.format( subtotal) + "\n";
//accumulates the overall subtotal for all items
Pretotal = Pretotal + subtotal;
//verifies that the user wants to stop entering data
string_item = JOptionPane.showInputDialog(" Enter a positive integer to continue or 0 to stop. ");
itemNumber = Integer.parseInt(string_item);
// loop termination condition if user's input is 0 .It will end the loop
} while ( itemNumber!= 0);
tax = Pretotal * tax_rate; // calculate tax amount
total = Pretotal + tax; //calculate total = subtotal + tax
//appends data regarding the subtotal, tax, and total to the output area
output += "\n" + "Order Subtotal" + "\t" + moneyFormat.format( Pretotal) +
"\n" + "Tax" + "\t\t" + twoDigits.format( tax ) + "\n" + "Order Total" +
"\t\t" + moneyFormat.format( total );
//attaches the data in the output variable to the output area
outputArea.setText( output );
} //end init
}// end applet InvoiceAny help or sugestions would be greatly appreaciated. I've been working on this for over a week and everything I try goes nowhere.First answer: You shouldn't ask multiple questions in the same thread. Ask a specific question, with an appropriate subject line (optionally, assign the number of Dukes you are willing to give for the help). When question #1 is answered and question #2 arises, it's time for a new thread (don't forget to give out Dukes before moving on).
Second answer: I think you need a Transfer Object (http://java.sun.com/blueprints/patterns/TransferObject.html). It's whole purpose is to hold/transfer instance data where it is needed. Create a class something like this:
public class ItemTO
private String _number;
private String _description;
private double _price;
public ItemTO( String number, String description, double price )
_number = number;
_description = description;
_price = price
// Getter/Setter methods go here
}then, in the code where you read in the file do something like this:
BufferedReader input = null;
try
input = new BufferedReader( new FileReader( "c:\\a.txt" ) );
List items = new ArrayList();
String line;
String itemNumber;
String itemDescription;
double itemPrice;
while ( (line = input.readLine() ) != null )
System.out.println( line );
itemNumber = // Parse it from line
itemDescription // Parse it from line
itemPrice = // Parse it from line
items.add( new ItemTO( itemNumber, itemDescription, itemPrice ) );
catch ( FileNotFoundException fnfe )
fnfe.printStackTrace();
catch ( IOException ioe )
ioe.printStackTrace();
finally
try
if ( input != null )
input.close();
catch ( Exception e )
e.printStackTrace();
}As for how to parse the line of the file, I'll leave that to you for now. Are the three values delimited with any special characters?
jbisotti -
I'm new to java and need help please
I have an assignment involves modifying a previous assignment. the code for the previous assigment is shown below.(it was required to be done as an applet this assigment can be an application or an applet) I'm trying to modify this code to read a text file (items.txt) that looks like this:
item # description price(this line does not appear in the text file)
001 shaving cream 400.00
999 razors 30.00
I need to load the item# and price from the text file into arrays(I have no clue how to use multi-dimensional arrays in java and would prefer not to)
I need to search the arrays based on the values entered by the user (item # and quantity) calculate the total for that item then create a new text file which has each line item for that order in the form:
item# quant price per item total(price per item*quant entered)
also also I need to be able to display the four items listed above after each loop as well as all the previous item number and quantities they selected until they indicate they don't want to select anymore.
I've been working on this for days and it seems like nothing I try works. My major problems are:
1. I have no idea how to read the text file and load those 2 items into their respective arrays
2. I can't seem to create a textfile that looks like text for the output file.
code]
import java.io.*;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.text.*;
import java.util.Locale;
public class arraySelection
extends JApplet {
//Initialize the applet
private Container getContentPane=null;
public void init() {
String string_item, string_quantity;
String output = "";
String description= "";
int counter= 0;
int itemNumber= 0;
double quantity = 0 ;
double tax_rate=.07;
double total= 0, price= 0;
double tax, subtotal;
double Pretotal= 0;
double priceArray[] = {1, .5, 3.65, 0.02, 0.09};
String descriptionArray[] = {"salt", "pepper", "paprika", "garlic", "thyme"};
// create number format for currency in US dollar format
NumberFormat moneyFormat = NumberFormat.getCurrencyInstance( Locale.US );
//format to have the total with two digits precision
DecimalFormat twoDigits = new DecimalFormat("0.00");
//Jtextarea to display results
JTextArea outputArea = new JTextArea ();
// get applet's content pane
Container container = getContentPane ();
//attach output area to container
container.add(outputArea);
//set the first row of text for the output area
output += "Invoice\nItem#\tDescription\tQuant@Price\t Line Total" + "\n";
do //begin loop structure obtain input from user
// obtain item number from user
string_item = JOptionPane.showInputDialog(
"Please enter an item number 1, 2, 3, 4, or 5:");
//obtain quantity of each item that user enter
string_quantity = JOptionPane.showInputDialog("Enter the quantity:");
// convert numbers from type String to Integer or Double
itemNumber = Integer.parseInt(string_item);
quantity = Double.parseDouble(string_quantity);
switch (itemNumber) {//Determine input from user to assign price and description
case 10: // user input item =10
price = priceArray[0];
description = descriptionArray[0];
break;
case 20: // user input item =20
price = priceArray [1];
description = descriptionArray[1];
break;
case 30: //user input item =30
price=priceArray[2];
description = descriptionArray[2];
break;
case 40: //user input item =40
price=priceArray[3];
description = descriptionArray[3];
break;
case 50: //user input item =50
price=priceArray[4];
description = descriptionArray[4];
break;
default: // user input item is not on the list
output += "Invalid value entered"+ "\n";
price=0;
description= "";
//Calculates the total for each item number and stores it in subtotal
subtotal = price * quantity;
//display input from user
output += itemNumber + "\t" + description + "\t\t"+ quantity + "@" +
moneyFormat.format( price) + "\t" + moneyFormat.format( subtotal) + "\n";
//accumulates the overall subtotal for all items
Pretotal = Pretotal + subtotal;
//verifies that the user wants to stop entering data
string_item = JOptionPane.showInputDialog(" Enter a positive integer to continue or 0 to stop. ");
itemNumber = Integer.parseInt(string_item);
// loop termination condition if user's input is 0 .It will end the loop
} while ( itemNumber!= 0);
tax = Pretotal * tax_rate; // calculate tax amount
total = Pretotal + tax; //calculate total = subtotal + tax
//appends data regarding the subtotal, tax, and total to the output area
output += "\n" + "Order Subtotal" + "\t" + moneyFormat.format( Pretotal) +
"\n" + "Tax" + "\t\t" + twoDigits.format( tax ) + "\n" + "Order Total" +
"\t\t" + moneyFormat.format( total );
//attaches the data in the output variable to the output area
outputArea.setText( output );
} //end init
}// end applet Invoice
Any help or sugestions would be greatly appreaciated. I've been working on this for over a week and everything I try goes nowhere.item # description price(this
line does not appear in the text file)
001 shaving cream 400.00
999 razors 30.00
I need to load the item# and price from the text file
into arrays(I have no clue how to use
multi-dimensional arrays in java and would prefer not
to)That's good, because you shouldn't use multidimensional arrays here. You should have a one-dimensional array (or java.util.List) of objects that encapsulate each line.
I've been working on this for days and it seems like
nothing I try works. My major problems are:
1. I have no idea how to read the text file and load
those 2 items into their respective arrays
2. I can't seem to create a textfile that looks like
text for the output file.The java.io package has file reading/writing classes.
Here's a tutorial:
http://java.sun.com/docs/books/tutorial/essential/io/index.html -
Hi,
I have this idea in my head, and i wanna get it out..
Okie the plan is that I want to create something like a macro program. The special thing is that I want to create a server and 2 clients. The thing I want is that whenever I hit a special key from Client1, that key is going to be sent to the server,then the server is going to modify it, and then send to the Client2. And then the Client2 will invoke the key just like a macro program.
Okie the networking part, I kindda have an idea what how to do it. However since it is more like a macro program, I want it (client/server) to run simutaniously with other programs I am running.
Ex:
Let's say I am playing a game, I hit number 1 to signal the game that I want my unit to attack something. Meanwhile the Client gotta capture the key 1 that I just hit and send it to the server and then the client2, and then perform an action of pressing a key that a server sends to.
Could anyone have an idea of how to do the capture keys and invoke keys as I mentioned above?
Thank you
please email me at [email protected] if you could help me outJNI (Java Native Interface) is the interface between Java and C (usually native functions in C). In C you can do a lot more low-level stuff than in Java, particularly interacting with the OS at a system level. This is the native part.
Ie, the system knows about all key events. It then sends them to the OS, that only directs them to the program with focus. (Might be java, might not. But no program can get keyevents intended for another program).
Using JNI, you could intercept the keyevents betweent the system and the os, and do what you want with them.
But, I don't know JNI, and I don't know much about it. This is mainly guesswork. It's along the right track, but the system/os stuff might not be 100% correct.
The other thing is, once you start writing code that interacts directly with the system, it loses all cross-platform compatibility. IE, if you write something that interacts with windows, it obviously won't work on Linux.
Cheers,
Radish21 -
Challenging issue for Java and XML Gurus.Please advise
An extremely tricky and challenging code.
I have been able to add 2 XML documents together
using importNode().
xmlDoc1
<?xml version="1.0" encoding="UTF-8"?>
<i:Interest xmlns:i="common">
<i:Details xsi.type="i:vanilla.details.stock">
<i:Strategy xsi.type="strategies:call">
<strategies.Expiry>2009-12-01</strategies.Expiry>
</i:Strategy>
<i:Ref/>
</i:Details>
</i:Interest>
xmlDoc2
<?xml version="1.0" encoding="UTF-8"?>
<i:Underlying value="KGF">
<common:Currency>GBP</common:Currency>
</i:Underlying>
My Java Code to append them together
NodeList list = xmlDoc2.getChildNodes();
for (int i=0; i< list .getLength(); i++) {
Element element = (Element)list.item(i);
Node dup = xmlDoc1.importNode(element, true);
xmlDoc1.getDocumentElement().appendChild(dup);
Output:
<?xml version="1.0" encoding="UTF-8"?>
<i:Interest xmlns:i="common">
<i:Details xsi.type="i:vanilla.details.stock">
<strategies.Description>Call</strategies.Description>
<strategies.Expiry>2009-12-01</strategies.Expiry>
</i:Strategy>
<i:Ref/>
</i:Details>
<i:Underlying value="KGF">
<common:Currency>GBP</common:Currency>
</i:Underlying>
</i:Interest> Query:
I would like to add the 2nd XML Document after element <i:Ref> . How to do this? I dont want the 2nd XML doc after <i:details> but before it.
Please help.Well. You say you want to insert a node as a child of another node, and it needs to be inserted before a certain other child node.
There's an insertBefore() method in the Node interface. Use that.
And if you thought that was a challenging issue then you might as well give up writing DOM code right now. -
1300 Bridge: VLAN and encryption question
Hi!
I configured a 1300 bridge with dot1q-VLANs and tkip/wpa encryption:
interface Dot11Radio0
no ip address
no ip route-cache
encryption vlan 1 mode ciphers tkip
encryption vlan 91 mode ciphers tkip
encryption vlan 150 mode ciphers tkip
ssid skylink
vlan 1
authentication open
authentication key-management wpa
infrastructure-ssid
wpa-psk ascii 7 xxxx
short-slot-time
cca 0
concatenation
speed basic-1.0 basic-2.0 basic-5.5 6.0 9.0 basic-11.0 12.0 18.0 24.0 36.0 48.0 54.0
rts threshold 4000
channel 2472
station-role root
payload-encapsulation dot1h
antenna receive right
antenna transmit right
infrastructure-client
interface Dot11Radio0.1
encapsulation dot1Q 1 native
no ip route-cache
bridge-group 1
bridge-group 1 spanning-disabled
interface Dot11Radio0.91
encapsulation dot1Q 91
no ip route-cache
bridge-group 91
bridge-group 91 spanning-disabled
interface Dot11Radio0.150
encapsulation dot1Q 150
no ip route-cache
bridge-group 150
bridge-group 150 spanning-disabled
interface FastEthernet0
no ip address
no ip route-cache
duplex auto
speed auto
ntp broadcast client
interface FastEthernet0.1
encapsulation dot1Q 1 native
no ip route-cache
bridge-group 1
bridge-group 1 spanning-disabled
interface FastEthernet0.91
encapsulation dot1Q 91
no ip route-cache
bridge-group 91
bridge-group 91 spanning-disabled
interface FastEthernet0.150
encapsulation dot1Q 150
no ip route-cache
bridge-group 150
bridge-group 150 spanning-disabled
Is it necessary to set the
encryption vlan 91 mode ciphers tkip
encryption vlan 150 mode ciphers tkip
so that all VLANs are crypted?
How can I examine that all VLANs are crypted?
Best regards
Michael SimonNo. As there is no SSID assigned to VLAN 91 and 150, I was by the TME (Technical Marketing Engineer) that the 1300 should use the encryption defined in the native VLAN (VLAN 1 in your case) to transport traffic on VLAN 91 and 150. I have not taken any wireless sniffer trace to verify it though.
There are a couple of ways to verify it:
1. a wireless sniffer trace
2. debug dot dot 0 trace print xmt rcv
Please be very careful when use option #2. Option #2 turns the wireless bridge into a wireless sniffer. If there are heavy traffic between the two bridges, the wireless bridges will crash. Please use option # 2 in test environment or limited traffic. -
Itunes tool bar wont work and other questions please!!!!
Hey!
My itunes toolbar wont work, it seems completly useless. I was just wondering how you can get it working again as i used it all the time.
Another question for u guys is, is there a way of making msn messenger regonise the music ur listening to on itunes. I pressed the "turn on what im listening to" button but that hasnt worked.
Thanks you guys, you rock!Maybe you just haven't forced the toolbar to show itself. As far as I know it only shows itself AFTER you search for something. It filters the results. This makes it different from all the other "bars" everyone is familiar with, the kind that reside in, say, Firefox and are just always there.
-
Hi All,
Under WS2013 R2 Std Remote Desktop Services (RDP, Terminal Services),
1) are there any special PCI (credit card security) requirements?
and
2) is there a way to use 2048 bit encryption?
Many thanks,
-THi,
Here providing you general link which might helpful to understand.
1. What's New in BitLocker for Windows 8.1 and Windows Server 2012 R2
2. 6 Appendix A: Product Behavior
3. Microsoft Security Advisory: Update for minimum certificate key length
Hope it helps!
Thanks,
Dharmesh -
is ther a way to index in an atumatic way the rows of a database table?
for example if i delete the row numer 4, there will be no more index 4. So i need that when i delete a row the hole table indexes again the rows in order to not lose the index number of the row it has benn deleted.
am i clear enough, excuse my englis thanksPerhaps you should say what you are trying to do and why to make it clearer.
Recalculating an index for every record in the database every time sounds quite hard on the processor.
My database automatically gives a unique number called an oid to every record, which I often find useful. -
Java and XML . PLEASE help
Hi,
I am using a SAX Parser to create XML documnets on the fly
I am creating an xml document with some elements
<name> userName </name>
<pwd> pwd </pwd>
Is there any class which can be used to create tag names
like CreateTag("name") and endTag();
which will create <name> </name>wouldn't be hard to write a method to do that:
public String createTag(String tag) {
StringBuffer buffer = new StringBuffer();
buffer.append("<").append(name).append(">");
return buffer.toString();
} -
I am using Acrobat XI Pro: is there a way to make a file read-only AND encrypted?
Folks,
I may have found a way to create a pdf document with Acrobat XI Pro that is read-only AND encrypted. Please let me know if I have indeed succeeded or not, thank you!
The steps that I follow to create the read-only AND encrypted pdf document are as follows:
Create a plain pdf document, from MS Word for example
Sanitize Document
Create Form without fields
Close Form Editing
Encrypt with Password
Save
Save As Other… => Reader Extended PDF... => Enable More Tools (includes form fill-in & save)…
I as a not-very-sophisticated-computer-user did not find a way to hack difficult to detect changes - such as the insertion or deletion of the word 'not' - into the resulting pdf document. But again, please let me know if you DO find a way to hack the resulting pdf document, thank you!
P.S. I think the resulting pdf document is essentially an encrypted form, albeit one without fields. -
Can i add a servlet in oracle database for webservices without java and how?
HI
can i add a servlet in oracle database for webservices without java and how?
Please help
ThanksDear Frank,
I have done as follows
created a form with a button, and in my button pressed event I wrote
WEB.SHOW_DOCUMENT('javascript:openMyURL("http://192.168.1.34/HELP/ADMF0005.html");', '_Self');
and in my formsweb.cfg I have the following
HTMLbeforeForm=<script> function OpenMyURL(page){window.open(page,"myURL","width=700,width=400,top=0,left=0,toolbar=no,menubar=no"); } </script>
When I click on the button it is coming with toolbar , etc as well as no page found is coming with the following in the address bar.
javascript:openMyURL("http://192.168.1.34/HELP/ADMF0005.html");
My html view source comes as below for the form
<HEAD><TITLE>Oracle9iAS Forms Services</TITLE></HEAD>
<BODY >
<script> function OpenMyURL(page){window.open(page,"myURL","width=700,width=400,top=0,left=0,toolbar=no,menubar=no"); } </script>
<!-- Forms applet definition (start) -->
<OBJECT classid="clsid:CAFECAFE-0013-0001-0009-ABCDEFABCDEF"
codebase="/forms90/jinitiator/jinit.exe#Version=1,3,1,9"
WIDTH="1000"
HEIGHT="660"
HSPACE="0"
VSPACE="0">
<PARAM NAME="TYPE" VALUE="application/x-jinit-applet;version=1.3.1.9">
<PARAM NAME="CODEBASE" VALUE="/forms90/java">
<PARAM NAME="CODE" VALUE="oracle.forms.engine.Main" >
I am using Forms [32 Bit] Version 9.0.2.7.0 -
Java 1.4 and AES Algorithm PLEASE HELP!!
I hope this question has not already been asked. I have spent a long time searching the archives and documentation.
I am attempting to migrate from jsdk1.3 to jsdk1.4 but have come up against the following problem.
I need to create keys and encrypt files and was doing it by using the following:
import java.security.*;
import cryptix.provider.key.RawKeyGenerator;
import xjava.security.KeyGenerator;
And in my code am using:
SecureRandom rnd = new SecureRandom();
rnd.nextInt();
RawKeyGenerator kg = (RawKeyGenerator)KeyGenerator.getInstance("AES","Cryptix");
kg.initialize(rnd, 32);
key = kg.generateKey();
But I now get the following exception.
Unexpected exception in IJCE_SecuritySupport.registerTargets()
Please report this as a bug to <[email protected]>, including
any other messages displayed on the console, and a description of what appeared to cause the error.
java.lang.InternalError: Unexpected exception in IJCE_SecuritySupport.registerTargets()
at xjava.security.IJCE.reportBug(IJCE.java:701)
at xjava.security.IJCE_SecuritySupport.<clinit>(IJCE_SecuritySupport.java:138)
at xjava.security.IJCE.findTarget(IJCE.java:498)
at xjava.security.IJCE.getProviderInternal(IJCE.java:666)
at xjava.security.IJCE.getClassCandidate(IJCE.java:446)
at xjava.security.IJCE.getImplementationClass(IJCE.java:410)
at xjava.security.IJCE.getImplementation(IJCE.java:367)
at xjava.security.KeyGenerator.getInstance(KeyGenerator.java:152)
at uk.co.sundayta.docsys.KeyManager.createNewKey(KeyManager.java:96)
at uk.co.sundayta.docsys.KeyManager.createEncodedKey(KeyManager.java:110)
at uk.co.sundayta.docsys.KeyManager.createKey(KeyManager.java:71)
at uk.co.sundayta.docsys.KeyManager.run(KeyManager.java:62)
at java.lang.Thread.run(Thread.java:536)
The KeyManager error at line 96 mentioned above is in my code and is related to the snipit of code mentioned above.
I need 1.4 as I need to use the new 1.4 plug-in on the clients to unencrypt the data.
I have not sent an email to the address mentioned above as I assume it is a migration problem.
I also had a message saying:
Netscape security model is no longer supported.
Please migrate to the Java 2 security model instead.
I cannot do this as I need the java 1.4 plug-in for something else on the client. If I compile with 1.3 and run with 1.4 there seems to be an incompatibility problem.
I would be grateful for any advice as I need to ship this soon.
Thanks Andrew Mercer.Hi!
I was trying to run some examples from the JXTA platform with jdk_1.3 (the classic HelloWorld), and got a very similar exception. The problem is I'm quite a newbie with JXTA and have no idea whatsoever about security in java, so I don't know what to do about it. I got the same messages about migrate the security model and report the whole thing as a bug, and I actually tried to send the message, but the address doesn't exist, so I'm stuck. If you've come across a solution or someone who might help, I would really like to know it! I copy below the text for the exception, in case it's helpfull to you somehow.
Kind regards,
Marta
Text for the exception:
java.lang.NoSuchMethodError
at xjava.security.IJCE_SecuritySupport.registerTargets(IJCE_SecuritySupport.java:155)
at xjava.security.IJCE_SecuritySupport.<clinit>(IJCE_SecuritySupport.java:134)
at xjava.security.IJCE.findTarget(IJCE.java:498)
at xjava.security.IJCE.getProvidersInternal(IJCE.java:638)
at xjava.security.IJCE.getClassCandidate(IJCE.java:426)
at xjava.security.IJCE.getImplementationClass(IJCE.java:410)
at xjava.security.IJCE.getImplementation(IJCE.java:367)
at xjava.security.Cipher.getInstance(Cipher.java:485)
at xjava.security.Cipher.getInstance(Cipher.java:452)
at xjava.security.Cipher.getInstance(Cipher.java:395)
at COM.claymoresystems.crypto.PEMData.writePEMObjectPEMData.java:154)
at COM.claymoresystems.crypto.EAYEncryptedPrivateKey.writePrivateKey(EAYEncryptedPrivateKey.java:109)
at net.jxta.impl.endpoint.tls.PeerCerts.appendPrivateKey(PeerCerts.java:174)
at net.jxta.impl.endpoint.tls.PeerCerts.genPeerRootCert(PeerCerts.java:137)
at net.jxta.impl.endpoint.tls.PeerCerts.generateCerts(PeerCerts.java:457)
at net.jxta.impl.endpoint.tls.TlsConfig.init(TlsConfig.java:185)
at net.jxta.impl.peergroup.Configurator.configureTls(Configurator.java:265)
at net.jxta.impl.peergroup.Configurator.<init>(Configurator.java:202)
at net.jxta.impl.peergroup.Platform.init(Platform.java:252)
at net.jxta.peergroup.PeerGroupFactory.newPlatform(PeerGroupFactory.java:210)
at net.jxta.peergroup.PeerGroupFactory.newNetPeerGroup(PeerGroupFactory.java:284)
at SimpleJxtaApp.startJxta(SimpleJxtaApp.java:91)
at SimpleJxtaApp.main(SimpleJxtaApp.java:73)
Unexpected exception in IJCE_SecuritySupport.registerTargets() -
Sample JAVA Mobile Server Publish code, and technical questions
Dear Oracle technical representative, or user:
I need to programmatically create, and remove publications using the pure JAVA classes of Consolidator, ConsolidatorManager, and ResourceManager for the Mobile Server in OracleLite 9i Release 5.0.1. On the creation side I have managed to get the example found in the directory OraLite501\Mobile\Server\Sample\Sample11 functioning using my installation parameters. I had a very difficult time of it because (1) the sample11 code fails to open an jdbc connection to the Mobile Server Repository Schema with the function Consolidator.OpenConnection, and (2) the ResourceManager function openConnection will not work unless the Webtogo.ora file is in the current working directory. The ConsolidatorManager function OpenConnection may also not work unless the Webtogo.ora file is in the current working directory, but I did test the hypothesis. Both of these problems need to be addressed in the sample11 code, and documentation to save other software developers from wasting hours of their valuable time. See line 223, 386, and 448 in the Publish.Java code that follows this problem description.
With the above two problems resolved, I can now programmatically create publications, but no hints on how to programmatically remove a publication exist in the documentation. The application I am developing will require the dynamic creation, and removal of publications. Also, when developing applications the complete removal of a publication is absolutely necessary when you have botched a publication. Thus my first question is What sequence of ResourceManager, and ConsolidatorManager function calls will completely remove a Publication?.
I also have two issues remaining with the code that I have so far developed. These issues will most likely be resolved, when I obtain instructions on how to completely remove a publication, and associated users. But, perhaps not. Referencing the Publish.java file that follows this problem description,
1. The ResourceManager function dropUser does not drop a user. See my comments, and code beginning at line 277 in Publish.java. Do I need to de-instantiate all subscriptions, and unsubscribe all subscription users before calling this function.? I think, I tried the de-instantiate, unsubscribe sequence without success, but in the confusion I may not have made the try.
2. How do I get rid of an index created with the ConsolidatorManager function DropPublicationItemIndex?. My comments on this problem begin at line 522 in Publish.java. For some reason the DropPublicationItemIndex function call made below line 448 does not work. What function calls are required prior to calling the DropPublicationItemIndex function?
Throughout the Publish.java code, I have made comments about some of the problems that I have had in getting the sample11 code working for my installation parameters. I think these comments should help the programmers maintaining the ResourceManager, and ConsolidatorManager code improve the stability of the programs. Please pass these comments, and attached files to the appropriate individuals,
if you are in a position to do so.
The other files that follow the Publish.java code are
1. Compile.bat - Compiles Publish.java using j2sdk1.4.0.
2. Run.bat - Executes Publish using \ j2sdk1.4.0\jre\server\jvm.dll.
3. Webtogo.ora
4. tnsnames.ora for the Mobile Server.
5. tnsnames.ora for the Database.
Feel free to access my server if you need to do so in resolving my problems. The parameters you will need to gain access can be found at the top of Publish.java, and in the included *.ora files.
Thanks,
Thomas G. Matney
[email protected]
(662)325-2791
//Start of Publish.java code
// Oracle HTTP Server URL = http://yggdrasill.cfr.msstate.edu:7778
// = http://130.18.168.225:7778
// Mobile Server URL = http://yggdrasill.cfr.msstate.edu/webtogo/startup
// = http://130.18.168.225/webtogo/startup
// Mobile Server Control Center URL = http://yggdrasill.cfr.msstate.edu/webtogo
// = http://130.18.168.225/webtogo
// Mobile Server Control Center URL = http://yggdrasill.cfr.msstate.edu/webtogo
// = http://130.18.168.225/webtogo
// Mobile Server Control Center username = administrator
// Mobile Server Control Center password = admin
// Mobile Server URL = http://yggdrasill.cfr.msstate.edu/webtogo/startup
// = http://130.18.168.225/webtogo/startup
// Mobile administrator username = fiafield // Schema FIAFIELD on FIA.CFR.MSSTATE.EDU
// Mobile administrator password = fiafield // Username and password are the same
import java.sql.SQLException;
import java.sql.*;
import oracle.lite.sync.Consolidator;
import oracle.lite.sync.ConsolidatorManager;
import oracle.mobile.admin.ResourceManager;
import oracle.mobile.admin.ResException;
import oracle.sql.*;
import oracle.jdbc.*;
import oracle.mobile.admin.*;
public class Publish
// Schema names and usernames are not case sensitive.
// UN fiafield = FIAFIELD
// SCHEMA fiafield = FIAFIELD
// Schema name/Username, and password used on creation of Mobile Repository
static String CONS_SCHEMA = "fiafield";
static String DEFAULT_PASSWORD = "fiafield";
static String admin_jdbc_url = "jdbc:oracle:oci8:@WEBTOGO.WORLD";
static String thin_jdbc_url =
"jdbc:oracle:thin:@YGGDRASILL:1521:FIA.YGGDRASILL.CFR.MSSTATE.EDU";
static String Publication;
static String CreateTreeTableShortNames =
"CREATE TABLE FIAFIELD.ZMTR1TBL("
+ "id FLOAT,"
+ "subp FLOAT,"
+ "rnum FLOAT,"
+ "st FLOAT,"
+ "unit FLOAT,"
+ "cnty FLOAT,"
+ "plot FLOAT,"
+ "cyc FLOAT,"
+ "scyc FLOAT,"
+ "tree FLOAT,"
+ "ncpt FLOAT NULL,"
+ "dist FLOAT NULL,"
+ "diam FLOAT NULL,"
+ "dmht FLOAT NULL,"
+ "dmck FLOAT NULL,"
+ "spec FLOAT NULL,"
+ "lang FLOAT NULL,"
+ "nctc FLOAT NULL,"
+ "stat FLOAT NULL,"
+ "util FLOAT NULL,"
+ "deca FLOAT NULL,"
+ "crat FLOAT NULL,"
+ "ccls FLOAT NULL,"
+ "az FLOAT NULL,"
+ "cond FLOAT NULL,"
+ "tlen FLOAT NULL,"
+ "alen FLOAT NULL,"
+ "lmet FLOAT NULL,"
+ "nctg FLOAT NULL,"
+ "rcul FLOAT NULL,"
+ "ncpd FLOAT NULL,"
+ "dead FLOAT NULL,"
+ "mor FLOAT NULL,"
+ "modm FLOAT NULL,"
+ "dml1 FLOAT NULL,"
+ "dmt1 FLOAT NULL,"
+ "dms1 FLOAT NULL,"
+ "dma1 FLOAT NULL,"
+ "dml2 FLOAT NULL,"
+ "dmt2 FLOAT NULL,"
+ "dms2 FLOAT NULL,"
+ "dma2 FLOAT NULL,"
+ "dml3 FLOAT NULL,"
+ "dmt3 FLOAT NULL,"
+ "dms3 FLOAT NULL,"
+ "dma3 FLOAT NULL,"
+ "dbtr FLOAT NULL,"
+ "dbsp FLOAT NULL,"
+ "nxtn FLOAT NULL,"
+ "dbds FLOAT NULL,"
+ "dbaz FLOAT NULL,"
+ "psta FLOAT NULL,"
+ "fiat FLOAT NULL,"
+ "fhmt FLOAT NULL"
+ ")";
static String CreateTreeTableLongNames =
"CREATE TABLE FIAFIELD.ZMTR1TBL("
+ "ID FLOAT,"
+ "SUBPLOT FLOAT,"
+ "RECORD_NUMBER FLOAT,"
+ "STATE FLOAT,"
+ "UNIT FLOAT,"
+ "COUNTY FLOAT,"
+ "PLOT FLOAT,"
+ "CYCLE FLOAT,"
+ "SUBCYCLE FLOAT,"
+ "TREE FLOAT,"
+ "NC_PLOT_TYPE FLOAT,"
+ "DISTANCE FLOAT NULL,"
+ "DIAMETER FLOAT NULL,"
+ "DIAMETER_HEIGHT FLOAT NULL,"
+ "DIAMETER_CHECK FLOAT NULL,"
+ "SPECIES FLOAT NULL,"
+ "LEAN_ANGLE FLOAT NULL,"
+ "NC_TREE_CLASS FLOAT NULL,"
+ "STATUS FLOAT NULL,"
+ "UTILIZATION FLOAT NULL,"
+ "DECAY FLOAT NULL,"
+ "CROWN_RATIO FLOAT NULL,"
+ "CROWN_CLASS FLOAT NULL,"
+ "AZIMUTH FLOAT NULL,"
+ "CONDITION FLOAT NULL,"
+ "TOTAL_LENGTH FLOAT NULL,"
+ "ACTUAL_LENGTH FLOAT NULL,"
+ "LENGTH_METHOD FLOAT NULL,"
+ "NC_TREE_GRADE FLOAT NULL,"
+ "ROTTEN_CULL FLOAT NULL,"
+ "NC_PREVIOUS_DBH FLOAT NULL,"
+ "CAUSE_OF_DEATH FLOAT NULL,"
+ "MORTALITY_YEAR FLOAT NULL,"
+ "MO_DAMAGE FLOAT NULL,"
+ "DAMAGE_LOCATION1 FLOAT NULL,"
+ "DAMAGE_TYPE1 FLOAT NULL,"
+ "DAMAGE_SEVERITY1 FLOAT NULL,"
+ "NC_DAMAGE_AGENT1 FLOAT NULL,"
+ "DAMAGE_LOCATION2 FLOAT NULL,"
+ "DAMAGE_TYPE2 FLOAT NULL,"
+ "DAMAGE_SEVERITY2 FLOAT NULL,"
+ "NC_DAMAGE_AGENT2 FLOAT NULL,"
+ "DAMAGE_LOCATION3 FLOAT NULL,"
+ "DAMAGE_TYPE3 FLOAT NULL,"
+ "DAMAGE_SEVERITY3 FLOAT NULL,"
+ "NC_DAMAGE_AGENT3 FLOAT NULL,"
+ "DB_TREE FLOAT NULL,"
+ "DB_SPECIES FLOAT NULL,"
+ "NEXT_NUMBER FLOAT NULL,"
+ "DB_DISTANCE FLOAT NULL,"
+ "DB_AZIMUTH FLOAT NULL,"
+ "PREVIOUS_STATUS FLOAT NULL,"
+ "FIA_TREE_NUMBER FLOAT NULL,"
+ "FHM_TREE FLOAT NULL"
+ ")";
public static void main(String argv[]) throws Throwable
// Publish - an OKAPI sample
if(argv.length == 2)
CONS_SCHEMA = argv[0] ;
DEFAULT_PASSWORD = argv[1] ;
//create required tables using standard jdbc
//DriverManager.registerDriver ((Driver)Class.forName ("oracle.jdbc.driver.OracleDriver").newInstance ());
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection c = null;
Statement s = null;
try
// Open connection to Mobile Repositoty/FIAFIELD schema as SYSTEM.
// Need the ability to grant resources, and connection to Mobile Repository user
//c = DriverManager.getConnection ("jdbc:oracle:oci8:@WEBTOGO.WORLD", "SYSTEM", "phwphw" );
// Remote connection. See attached webtogo.ora.
c = DriverManager.getConnection ("jdbc:oracle:oci8:@WEBTOGO.WORLD.YGG",
"SYSTEM", "phwphw");
s = c.createStatement ();
try
s.executeUpdate("DROP table FIAFIELD.ZMTR1TBL");
catch (SQLException ee)
ee.printStackTrace ();
try
s.executeUpdate(CreateTreeTableShortNames);
catch (SQLException ee)
ee.printStackTrace ();
try
s.executeUpdate("alter table FIAFIELD.ZMTR1TBL add constraint"
+" zmtr1tbl_pk primary key(subp, tree)");
catch (SQLException ee)
ee.printStackTrace ();
// Line 223 // create consolidator publications.
try
// *****!!!!! Unless the Webtogo.ora file is in the current working
// directory the connection is not made. This version of the resource
// manager must be looking for the file in the old 8i Mobile default
// directory. This is a definite problem. If the code was working, the
// addition of the webtogo.ora should have affect on the functionality
// of the code.
// The connection is made to the Mobile Server. At least no exceptions
// are thrown, provided the webtogo.ora is in the current working
// directory.
//oracle.mobile.admin.ResourceManager.openConnection(CONS_SCHEMA, DEFAULT_PASSWORD);
// I tried making a direct connect to possibly avoid needing to have the
// webtogo.ora file in the current directory. The direct coonect did not work.
// You can quickly convince yourself that the webtogo.ora file must
// be in the current working directory, by running the code with and
// without the webtogo.ora in the current working directory.
// The directory OraLiteHome\Mobile\Server\bin is in the PATH after
// after installation but the extension .ora is not in PATHEXT. The
// OraLite installer should put .ora in PATHEXT. I tried adding .ora
// to the PATHEXT, but it still could not find thw webtogo.ora file,
// and it should have. What is going on? I am a bit rusty on DOS so
// I may not have thing right.
// OraLiteHome\Mobile\Server\bin is the residing directory for
// the functional copy of the webtogo.ora file.
oracle.mobile.admin.ResourceManager.openConnection(
CONS_SCHEMA,
DEFAULT_PASSWORD,
"jdbc:oracle:oci8:@WEBTOGO.WORLD");
catch(ResException ee)
ee.printStackTrace (); // NULL Pointer Exception?
// The Mobile user is created, and then the function throws a resource exception.
// This is a serious problem with the code. One would assume that the user
// is not created if and exception is thrown.
// This appears to be a bug in the createUser code. The function should return
// false if the user is not created, and handle, or not throw the exception.
// The function always returns false. It does return true when a user is created
// because it throws an exception.
boolean bIsCreated;
System.out.println("Begin of why is ResourceManager not dropping users?");
// Line 277
try
// The dropUser function will not drop a user. I have tested the function
// by creating the user ZMPT1UA in the Mobile Server Control Center
// http://Yggdrasill.cfr.msstate.edu/webtogo
// so I know that the user exist.
// This function throws a ResException but it is not declared correctly
// since you cannot trap the exception as a ResException. It always tells
// me the view does not exist. What steps are required to get the function
// to work? What function calls need to be made prior to calling the dropUser
// function.
oracle.mobile.admin.ResourceManager.dropUser("ZMPT1UA");
catch (Throwable ee)
ee.printStackTrace (); // NULL Pointer Exception?
System.out.println("End of why is ResourceManager not dropping users?");
try
bIsCreated = oracle.mobile.admin.ResourceManager.createUser(
"ZMPT1UA",
DEFAULT_PASSWORD,
"ZMPT1UA", "S");
catch (Throwable ee)
ee.printStackTrace (); // Ignore exception
// Obsolete or depreciated function, according to documentation?
oracle.mobile.admin.ResourceManager.commitTransaction();
// Create CONS_SCHEMA user on the database with the same username, and
// password as the user on the Mobile Server side. This is why the
// DriverManager connection was made as SYSTEM/phwphw.
// Grant ALL to repository, and user on replicated database
// On the database side there is a user with un = fiafield,
// and pw = fiafield, which is the same as the Mobile Repository
// schema name/password pair fiafield/fiafield. Can this duality
// create a problem? Probably not.
// Need SYSTEM ADMIN privilages for the next two steps, and that is
// why the coonection was established as SYSTEM/phwphw.
// Make user, and grants for Publish to user CONS_SCHEMA, and ZMPT1UA
System.out.println("Pargress point D");
try
s.execute("Create user " + "ZMPT1UA" + " identified by " + DEFAULT_PASSWORD);
catch (SQLException ee)
ee.printStackTrace (); // ignore
try
s.execute("GRANT ALL ON FIAFIELD.ZMTR1TBL to " + CONS_SCHEMA + " WITH GRANT OPTION");
catch (SQLException ee)
ee.printStackTrace (); // ignore
try
s.execute("GRANT ALL ON FIAFIELD.ZMTR1TBL to " + "ZMPT1UA" + " WITH GRANT OPTION");
catch (SQLException ee)
ee.printStackTrace (); // ignore
/* This code is not needed to test the code
// Insert items into table FIAFIELD.ZMTR1TBL from FIAFIELD.HUSKY_TREE
String Statement =
"INSERT INTO FIAFIELD.ZMTR1TBL SELECT * from FIAFIELD.HUSKY_TREE WHERE PLOT = 1";
try
s.execute(Statement);
catch (SQLException ee)
System.out.println("FIAFIELD.HUSKY_TREE was not inserted into FIAFIELD.ZMTR1TBL");
ee.printStackTrace (); // ignore
c.commit ();
catch (SQLException ee)
ee.printStackTrace ();
finally
if (s!= null) try {s.close ();}catch (SQLException e1){}
if (c!= null) try {c.close ();}catch (SQLException e2){}
// The Consolidator class is not thread safe, and I will eventually
// need thread safety. The ConsolidatorManage class is thread safe.
//Consolidator ConsolidatorXX = new Consolidator();
ConsolidatorManager ConsolidatorXX = new ConsolidatorManager();
// Line 386
// Try opening a connection. Sample11 does not open a connection, but it seems
// like a logical first thing to do.
// At least with this connection the DropPublication, and AddPublication functions
// appear to work, or at least they do not throw exceptions. The DropPublication
// throws an exception if a publication does not exist? I tested this and indeed
// if I call the DropPublication function, and do not create the Publication again
// when I reenter the program the DropPublication function throws an exception, and
// produces the correct error message(The publication does not exist). There is hope.
// It is very disturbing that the program fails unless the webtogo.ora file is not
// in the current working directory. Because the OpenConnection functions of both
// the ResourceManager, and ConsolidatorManager both appear to need access to the
// webtogo.ora file, and they are finding them in the current directory, the
// logical conclusion is that both of the classes are attempting to open the
// webtogo.ora with the relative path webtogo.ora, and not the absolute path
// OraHomeLite/Mobile/Server/Bin/webtogo.ora. As this has to be the case, why
// is this very important fact not in the documentation? Or, am I wrong?
Connection conn = null;
try
//ConsolidatorXX.OpenConnection(CONS_SCHEMA,
//DEFAULT_PASSWORD);
//ConsolidatorXX.OpenConnection(CONS_SCHEMA,
//DEFAULT_PASSWORD,
//"jdbc:oracle:oci8:@WEBTOGO.WORLD");
conn = DriverManager.getConnection
("jdbc:oracle:oci8:@WEBTOGO.WORLD",
CONS_SCHEMA,DEFAULT_PASSWORD);
//conn = DriverManager.getConnection
//("jdbc:oracle:oci8:@WEBTOGO.WORLD",
//"SYSTEM","phwphw");
ConsolidatorXX.OpenConnection(conn);
catch (Throwable e)
e.printStackTrace(); //ignore error
// Publication name
Publication = "ZMTR1PUB";
try
ConsolidatorXX.DeinstantiateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
System.out.println("Could not Deinstantiate Subscription ZMPT1UA");
e.printStackTrace(); //ignore error
// Line 448
// There is no Consolidator.OpenConnection in the orginal sample11.java code.
// Why?. It appears to be neccessary. The only way I can make the sample11 code
// or this program work is to open a jdbc connection with the Consolidator.OpenConnection
// function. I assume that somehow the Consolidator.OpenConnection function was
// deleted from sample11.java.
// This try to drop a publication index does not work, because when I try
// to recreate the index in the following code it warns me that I have a
// bad column name for the index. So it thinks the index still exist.
// Why?. How do I get rid of the index?
try
ConsolidatorXX.DropPublicationItemIndex("ZMTR1IX1");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublicationItem("ZMTR1ITM");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublication(Publication);
catch (Throwable e)
e.printStackTrace(); //ignore error
try
//ConsolidatorXX.CreatePublication(Publication, Consolidator.OKPI_CREATOR_ID,
//"zMTR1.%s", null);
ConsolidatorXX.CreatePublication(Publication, Consolidator.OKAPI_WINCE,
"zMTR1.%s", null);
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublicationItemIndex("ZMTR1IX1");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.CreatePublicationItem("ZMTR1ITM","FIAFIELD","ZMTR1TBL", "F",
"SELECT * FROM FIAFIELD.ZMTR1TBL", null, null);
catch (Throwable e)
e.printStackTrace();
System.out.println("Begin of how can drop this index and get rid of the warning?");
// Line 522
// I defined the index ZMTR1IX1 originally on the variable subp, and did not get
// any warning. I then changed the index variable for the index to id, and started
// receiving the warning to check the index column for typographical errors. Even
// if I change the index variable back to subp, I continue to receive the warning.
// How do I get rid of the index and the warning, so I can recreate the index for
// another variable? I quess the real question is "How to I completely remove a
// publication, and all of its parts so I can start over?
try
ConsolidatorXX.CreatePublicationItemIndex(
"ZMTR1IX1", "ZMTR1ITM", "I", "id");
catch (Throwable e)
e.printStackTrace ();
System.out.println("End of how can drop this index and get rid of the warning?");
try
ConsolidatorXX.AddPublicationItem(
Publication, "ZMTR1ITM", null, null, "S", null, null);
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.CreateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.InstantiateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.CloseConnection();
if(conn != null)
conn.close();
catch (Throwable e)
e.printStackTrace(); //ignore error
// Obsolete or depreciated function, according to documentation?
oracle.mobile.admin.ResourceManager.commitTransaction();
oracle.mobile.admin.ResourceManager.closeConnection();
End of Publish.java code
Begin Compile.bat
set CLASSPATH = .;D:\jdk1.4.0\lib\tools.jar;D:\OraLite501\MOBILE\classes\CONSOLIDATOR.JAR;D:\OraLite501\MOBILE\SERVER\BIN\WEBTOGO.JAR;D:\OraLite501\jdbc\lib\classes12.zip;D:\OraLite501\MOBILE\classes\classgen.jar;D:\OraLite501\MOBILE\classes\servlet.jar;D:\OraLite501\MOBILE\CLASSES\OLITE40.JAR
set PATH= d:\jdk1.4.0\jre\bin\server;d:\jdk1.4.0\bin;D:\OraLite501\bin;D:\OraLite501\Mobile\Server\bin;D:\oracle\ora92\bin;D:\OraLite501\MOBILE\sdk\bin
d:\jdk1.4.0\bin\javac Publish.java
End Compile.bat
Begin Run.bat
set CLASSPATH= .;D:\jdk1.4.0\lib\tools.jar;D:\OraLite501\MOBILE\classes\CONSOLIDATOR.JAR;D:\OraLite501\MOBILE\SERVER\BIN\WEBTOGO.JAR;D:\OraLite501\jdbc\lib\classes12.zip;D:\OraLite501\MOBILE\classes\classgen.jar;D:\OraLite501\MOBILE\classes\servlet.jar;D:\OraLite501\MOBILE\CLASSES\OLITE40.JAR
set PATH= d:\jdk1.4.0\jre\bin\server;d:\jdk1.4.0\bin;D:\OraLite501\bin;D:\OraLite501\Mobile\Server\bin;D:\oracle\ora92\bin;D:\OraLite501\MOBILE\sdk\bin
d:\jdk1.4.0\bin\java Publish
End Run.bat
Begin webtogo.ora
USE_SYSTEM_CLASSPATH = NO
MODE = SERVER
PORT = 80
BASE_URL=/webtogo
ADMIN_TNS_NAME=WEBTOGO.WORLD
ADMIN_JDBC_URL=jdbc:oracle:oci8:@WEBTOGO.WORLD
APPLET_USE_THIN_JDBC = YES
THIN_JDBC_URL=jdbc:oracle:thin:@YGGDRASILL:1521:FIA.YGGDRASILL.CFR.MSSTATE.EDU
SITE_OFFLINE_PERIOD=0
CUSTOM_WORKSPACE=no
CUSTOM_DIRECTORY=myworkspace
DEFAULT_PAGE=myfirstpage.html
ADMIN_USER=8B37E78535B55525292A3A2929292999
ADMIN_PASSWORD=873515A838B85828292A3A2929292999
[EXTERNAL_AUTHENTICATION]
#CLASS=com.acme.SampleAuthenticator
# Web-to-go workspace's font
FONT_NAME=Arial
[FILESYSTEM]
#ROOT_DIR=%WEBTOGO_HOME%\server
#TYPE=O8
#TYPE=OL
#TYPE=OS
# Cache size in MBs
#CACHE_SIZE=10
MAX_CONNECTIONS=4
[DEBUG]
#ENABLE=YES
# The log file name.
#LOG_FILE=test.log
# Machine name and port where wsh.exe -m is running. Web-to-go
# will send debug output to that machine.
#MACHINE=
#PORT=100
[APPLICATIONS]
XMLFILE = ws1.xml
PACK_HELP=D:\OraLite501\mobile\doc\wtg\html\wtgdep.htm
[PUBLIC]
oracle.lite.sync.ConsolidatorServlet=/Consolidator
[CONSOLIDATOR]
# Installer will change these values
SERVER_VERSION=8.1.5
# 8.0.5 or 8.1.5
# Installer won't change these values
MAX_THREADS=3
JDBC_DRIVER=oracle.jdbc.driver.OracleDriver
CREATE_USER_OPTIONS_O8I=PROFILE CONSOLIDATOR_CLIENT_P DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS TEMPORARY TABLESPACE INDX QUOTA UNLIMITED ON INDX
CREATE_USER_OPTIONS_O8=PROFILE CONSOLIDATOR_CLIENT_P DEFAULT TABLESPACE USR QUOTA UNLIMITED ON USR
TEMPORARY TABLESPACE TEMPORARY QUOTA UNLIMITED ON TEMPORARY
TEMP=c:\\temp
WTG_PROXY_PORT=80
TRACE=NO
TRACE_ALL=NO
End webtogo.ora
Begin Mobile Server tnsnames.ora file
# TNSNAMES.ORA Network Configuration File: D:\OraLite501\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
WEBTOGO.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = YGGDRASILL.CFR.MSSTATE.EDU)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
WEBTOGO.WORLD.YGG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = YGGDRASILL.CFR.MSSTATE.EDU)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
End Mobile Server tnsnames.ora file
Begin Database tnsnames.ora file
# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
INST1_HTTP.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
FIA.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA.YGGDRASILL.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill.cfr.msstate.edu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA.YGG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill.cfr.msstate.edu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
EXTPROC_CONNECTION_DATA.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
End Database tnsnames.ora fileDear Oracle technical representative, or user:
I need to programmatically create, and remove publications using the pure JAVA classes of Consolidator, ConsolidatorManager, and ResourceManager for the Mobile Server in OracleLite 9i Release 5.0.1. On the creation side I have managed to get the example found in the directory OraLite501\Mobile\Server\Sample\Sample11 functioning using my installation parameters. I had a very difficult time of it because (1) the sample11 code fails to open an jdbc connection to the Mobile Server Repository Schema with the function Consolidator.OpenConnection, and (2) the ResourceManager function openConnection will not work unless the Webtogo.ora file is in the current working directory. The ConsolidatorManager function OpenConnection may also not work unless the Webtogo.ora file is in the current working directory, but I did test the hypothesis. Both of these problems need to be addressed in the sample11 code, and documentation to save other software developers from wasting hours of their valuable time. See line 223, 386, and 448 in the Publish.Java code that follows this problem description.
With the above two problems resolved, I can now programmatically create publications, but no hints on how to programmatically remove a publication exist in the documentation. The application I am developing will require the dynamic creation, and removal of publications. Also, when developing applications the complete removal of a publication is absolutely necessary when you have botched a publication. Thus my first question is What sequence of ResourceManager, and ConsolidatorManager function calls will completely remove a Publication?.
I also have two issues remaining with the code that I have so far developed. These issues will most likely be resolved, when I obtain instructions on how to completely remove a publication, and associated users. But, perhaps not. Referencing the Publish.java file that follows this problem description,
1. The ResourceManager function dropUser does not drop a user. See my comments, and code beginning at line 277 in Publish.java. Do I need to de-instantiate all subscriptions, and unsubscribe all subscription users before calling this function.? I think, I tried the de-instantiate, unsubscribe sequence without success, but in the confusion I may not have made the try.
2. How do I get rid of an index created with the ConsolidatorManager function DropPublicationItemIndex?. My comments on this problem begin at line 522 in Publish.java. For some reason the DropPublicationItemIndex function call made below line 448 does not work. What function calls are required prior to calling the DropPublicationItemIndex function?
Throughout the Publish.java code, I have made comments about some of the problems that I have had in getting the sample11 code working for my installation parameters. I think these comments should help the programmers maintaining the ResourceManager, and ConsolidatorManager code improve the stability of the programs. Please pass these comments, and attached files to the appropriate individuals,
if you are in a position to do so.
The other files that follow the Publish.java code are
1. Compile.bat - Compiles Publish.java using j2sdk1.4.0.
2. Run.bat - Executes Publish using \ j2sdk1.4.0\jre\server\jvm.dll.
3. Webtogo.ora
4. tnsnames.ora for the Mobile Server.
5. tnsnames.ora for the Database.
Feel free to access my server if you need to do so in resolving my problems. The parameters you will need to gain access can be found at the top of Publish.java, and in the included *.ora files.
Thanks,
Thomas G. Matney
[email protected]
(662)325-2791
//Start of Publish.java code
// Oracle HTTP Server URL = http://yggdrasill.cfr.msstate.edu:7778
// = http://130.18.168.225:7778
// Mobile Server URL = http://yggdrasill.cfr.msstate.edu/webtogo/startup
// = http://130.18.168.225/webtogo/startup
// Mobile Server Control Center URL = http://yggdrasill.cfr.msstate.edu/webtogo
// = http://130.18.168.225/webtogo
// Mobile Server Control Center URL = http://yggdrasill.cfr.msstate.edu/webtogo
// = http://130.18.168.225/webtogo
// Mobile Server Control Center username = administrator
// Mobile Server Control Center password = admin
// Mobile Server URL = http://yggdrasill.cfr.msstate.edu/webtogo/startup
// = http://130.18.168.225/webtogo/startup
// Mobile administrator username = fiafield // Schema FIAFIELD on FIA.CFR.MSSTATE.EDU
// Mobile administrator password = fiafield // Username and password are the same
import java.sql.SQLException;
import java.sql.*;
import oracle.lite.sync.Consolidator;
import oracle.lite.sync.ConsolidatorManager;
import oracle.mobile.admin.ResourceManager;
import oracle.mobile.admin.ResException;
import oracle.sql.*;
import oracle.jdbc.*;
import oracle.mobile.admin.*;
public class Publish
// Schema names and usernames are not case sensitive.
// UN fiafield = FIAFIELD
// SCHEMA fiafield = FIAFIELD
// Schema name/Username, and password used on creation of Mobile Repository
static String CONS_SCHEMA = "fiafield";
static String DEFAULT_PASSWORD = "fiafield";
static String admin_jdbc_url = "jdbc:oracle:oci8:@WEBTOGO.WORLD";
static String thin_jdbc_url =
"jdbc:oracle:thin:@YGGDRASILL:1521:FIA.YGGDRASILL.CFR.MSSTATE.EDU";
static String Publication;
static String CreateTreeTableShortNames =
"CREATE TABLE FIAFIELD.ZMTR1TBL("
+ "id FLOAT,"
+ "subp FLOAT,"
+ "rnum FLOAT,"
+ "st FLOAT,"
+ "unit FLOAT,"
+ "cnty FLOAT,"
+ "plot FLOAT,"
+ "cyc FLOAT,"
+ "scyc FLOAT,"
+ "tree FLOAT,"
+ "ncpt FLOAT NULL,"
+ "dist FLOAT NULL,"
+ "diam FLOAT NULL,"
+ "dmht FLOAT NULL,"
+ "dmck FLOAT NULL,"
+ "spec FLOAT NULL,"
+ "lang FLOAT NULL,"
+ "nctc FLOAT NULL,"
+ "stat FLOAT NULL,"
+ "util FLOAT NULL,"
+ "deca FLOAT NULL,"
+ "crat FLOAT NULL,"
+ "ccls FLOAT NULL,"
+ "az FLOAT NULL,"
+ "cond FLOAT NULL,"
+ "tlen FLOAT NULL,"
+ "alen FLOAT NULL,"
+ "lmet FLOAT NULL,"
+ "nctg FLOAT NULL,"
+ "rcul FLOAT NULL,"
+ "ncpd FLOAT NULL,"
+ "dead FLOAT NULL,"
+ "mor FLOAT NULL,"
+ "modm FLOAT NULL,"
+ "dml1 FLOAT NULL,"
+ "dmt1 FLOAT NULL,"
+ "dms1 FLOAT NULL,"
+ "dma1 FLOAT NULL,"
+ "dml2 FLOAT NULL,"
+ "dmt2 FLOAT NULL,"
+ "dms2 FLOAT NULL,"
+ "dma2 FLOAT NULL,"
+ "dml3 FLOAT NULL,"
+ "dmt3 FLOAT NULL,"
+ "dms3 FLOAT NULL,"
+ "dma3 FLOAT NULL,"
+ "dbtr FLOAT NULL,"
+ "dbsp FLOAT NULL,"
+ "nxtn FLOAT NULL,"
+ "dbds FLOAT NULL,"
+ "dbaz FLOAT NULL,"
+ "psta FLOAT NULL,"
+ "fiat FLOAT NULL,"
+ "fhmt FLOAT NULL"
+ ")";
static String CreateTreeTableLongNames =
"CREATE TABLE FIAFIELD.ZMTR1TBL("
+ "ID FLOAT,"
+ "SUBPLOT FLOAT,"
+ "RECORD_NUMBER FLOAT,"
+ "STATE FLOAT,"
+ "UNIT FLOAT,"
+ "COUNTY FLOAT,"
+ "PLOT FLOAT,"
+ "CYCLE FLOAT,"
+ "SUBCYCLE FLOAT,"
+ "TREE FLOAT,"
+ "NC_PLOT_TYPE FLOAT,"
+ "DISTANCE FLOAT NULL,"
+ "DIAMETER FLOAT NULL,"
+ "DIAMETER_HEIGHT FLOAT NULL,"
+ "DIAMETER_CHECK FLOAT NULL,"
+ "SPECIES FLOAT NULL,"
+ "LEAN_ANGLE FLOAT NULL,"
+ "NC_TREE_CLASS FLOAT NULL,"
+ "STATUS FLOAT NULL,"
+ "UTILIZATION FLOAT NULL,"
+ "DECAY FLOAT NULL,"
+ "CROWN_RATIO FLOAT NULL,"
+ "CROWN_CLASS FLOAT NULL,"
+ "AZIMUTH FLOAT NULL,"
+ "CONDITION FLOAT NULL,"
+ "TOTAL_LENGTH FLOAT NULL,"
+ "ACTUAL_LENGTH FLOAT NULL,"
+ "LENGTH_METHOD FLOAT NULL,"
+ "NC_TREE_GRADE FLOAT NULL,"
+ "ROTTEN_CULL FLOAT NULL,"
+ "NC_PREVIOUS_DBH FLOAT NULL,"
+ "CAUSE_OF_DEATH FLOAT NULL,"
+ "MORTALITY_YEAR FLOAT NULL,"
+ "MO_DAMAGE FLOAT NULL,"
+ "DAMAGE_LOCATION1 FLOAT NULL,"
+ "DAMAGE_TYPE1 FLOAT NULL,"
+ "DAMAGE_SEVERITY1 FLOAT NULL,"
+ "NC_DAMAGE_AGENT1 FLOAT NULL,"
+ "DAMAGE_LOCATION2 FLOAT NULL,"
+ "DAMAGE_TYPE2 FLOAT NULL,"
+ "DAMAGE_SEVERITY2 FLOAT NULL,"
+ "NC_DAMAGE_AGENT2 FLOAT NULL,"
+ "DAMAGE_LOCATION3 FLOAT NULL,"
+ "DAMAGE_TYPE3 FLOAT NULL,"
+ "DAMAGE_SEVERITY3 FLOAT NULL,"
+ "NC_DAMAGE_AGENT3 FLOAT NULL,"
+ "DB_TREE FLOAT NULL,"
+ "DB_SPECIES FLOAT NULL,"
+ "NEXT_NUMBER FLOAT NULL,"
+ "DB_DISTANCE FLOAT NULL,"
+ "DB_AZIMUTH FLOAT NULL,"
+ "PREVIOUS_STATUS FLOAT NULL,"
+ "FIA_TREE_NUMBER FLOAT NULL,"
+ "FHM_TREE FLOAT NULL"
+ ")";
public static void main(String argv[]) throws Throwable
// Publish - an OKAPI sample
if(argv.length == 2)
CONS_SCHEMA = argv[0] ;
DEFAULT_PASSWORD = argv[1] ;
//create required tables using standard jdbc
//DriverManager.registerDriver ((Driver)Class.forName ("oracle.jdbc.driver.OracleDriver").newInstance ());
DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());
Connection c = null;
Statement s = null;
try
// Open connection to Mobile Repositoty/FIAFIELD schema as SYSTEM.
// Need the ability to grant resources, and connection to Mobile Repository user
//c = DriverManager.getConnection ("jdbc:oracle:oci8:@WEBTOGO.WORLD", "SYSTEM", "phwphw" );
// Remote connection. See attached webtogo.ora.
c = DriverManager.getConnection ("jdbc:oracle:oci8:@WEBTOGO.WORLD.YGG",
"SYSTEM", "phwphw");
s = c.createStatement ();
try
s.executeUpdate("DROP table FIAFIELD.ZMTR1TBL");
catch (SQLException ee)
ee.printStackTrace ();
try
s.executeUpdate(CreateTreeTableShortNames);
catch (SQLException ee)
ee.printStackTrace ();
try
s.executeUpdate("alter table FIAFIELD.ZMTR1TBL add constraint"
+" zmtr1tbl_pk primary key(subp, tree)");
catch (SQLException ee)
ee.printStackTrace ();
// Line 223 // create consolidator publications.
try
// *****!!!!! Unless the Webtogo.ora file is in the current working
// directory the connection is not made. This version of the resource
// manager must be looking for the file in the old 8i Mobile default
// directory. This is a definite problem. If the code was working, the
// addition of the webtogo.ora should have affect on the functionality
// of the code.
// The connection is made to the Mobile Server. At least no exceptions
// are thrown, provided the webtogo.ora is in the current working
// directory.
//oracle.mobile.admin.ResourceManager.openConnection(CONS_SCHEMA, DEFAULT_PASSWORD);
// I tried making a direct connect to possibly avoid needing to have the
// webtogo.ora file in the current directory. The direct coonect did not work.
// You can quickly convince yourself that the webtogo.ora file must
// be in the current working directory, by running the code with and
// without the webtogo.ora in the current working directory.
// The directory OraLiteHome\Mobile\Server\bin is in the PATH after
// after installation but the extension .ora is not in PATHEXT. The
// OraLite installer should put .ora in PATHEXT. I tried adding .ora
// to the PATHEXT, but it still could not find thw webtogo.ora file,
// and it should have. What is going on? I am a bit rusty on DOS so
// I may not have thing right.
// OraLiteHome\Mobile\Server\bin is the residing directory for
// the functional copy of the webtogo.ora file.
oracle.mobile.admin.ResourceManager.openConnection(
CONS_SCHEMA,
DEFAULT_PASSWORD,
"jdbc:oracle:oci8:@WEBTOGO.WORLD");
catch(ResException ee)
ee.printStackTrace (); // NULL Pointer Exception?
// The Mobile user is created, and then the function throws a resource exception.
// This is a serious problem with the code. One would assume that the user
// is not created if and exception is thrown.
// This appears to be a bug in the createUser code. The function should return
// false if the user is not created, and handle, or not throw the exception.
// The function always returns false. It does return true when a user is created
// because it throws an exception.
boolean bIsCreated;
System.out.println("Begin of why is ResourceManager not dropping users?");
// Line 277
try
// The dropUser function will not drop a user. I have tested the function
// by creating the user ZMPT1UA in the Mobile Server Control Center
// http://Yggdrasill.cfr.msstate.edu/webtogo
// so I know that the user exist.
// This function throws a ResException but it is not declared correctly
// since you cannot trap the exception as a ResException. It always tells
// me the view does not exist. What steps are required to get the function
// to work? What function calls need to be made prior to calling the dropUser
// function.
oracle.mobile.admin.ResourceManager.dropUser("ZMPT1UA");
catch (Throwable ee)
ee.printStackTrace (); // NULL Pointer Exception?
System.out.println("End of why is ResourceManager not dropping users?");
try
bIsCreated = oracle.mobile.admin.ResourceManager.createUser(
"ZMPT1UA",
DEFAULT_PASSWORD,
"ZMPT1UA", "S");
catch (Throwable ee)
ee.printStackTrace (); // Ignore exception
// Obsolete or depreciated function, according to documentation?
oracle.mobile.admin.ResourceManager.commitTransaction();
// Create CONS_SCHEMA user on the database with the same username, and
// password as the user on the Mobile Server side. This is why the
// DriverManager connection was made as SYSTEM/phwphw.
// Grant ALL to repository, and user on replicated database
// On the database side there is a user with un = fiafield,
// and pw = fiafield, which is the same as the Mobile Repository
// schema name/password pair fiafield/fiafield. Can this duality
// create a problem? Probably not.
// Need SYSTEM ADMIN privilages for the next two steps, and that is
// why the coonection was established as SYSTEM/phwphw.
// Make user, and grants for Publish to user CONS_SCHEMA, and ZMPT1UA
System.out.println("Pargress point D");
try
s.execute("Create user " + "ZMPT1UA" + " identified by " + DEFAULT_PASSWORD);
catch (SQLException ee)
ee.printStackTrace (); // ignore
try
s.execute("GRANT ALL ON FIAFIELD.ZMTR1TBL to " + CONS_SCHEMA + " WITH GRANT OPTION");
catch (SQLException ee)
ee.printStackTrace (); // ignore
try
s.execute("GRANT ALL ON FIAFIELD.ZMTR1TBL to " + "ZMPT1UA" + " WITH GRANT OPTION");
catch (SQLException ee)
ee.printStackTrace (); // ignore
/* This code is not needed to test the code
// Insert items into table FIAFIELD.ZMTR1TBL from FIAFIELD.HUSKY_TREE
String Statement =
"INSERT INTO FIAFIELD.ZMTR1TBL SELECT * from FIAFIELD.HUSKY_TREE WHERE PLOT = 1";
try
s.execute(Statement);
catch (SQLException ee)
System.out.println("FIAFIELD.HUSKY_TREE was not inserted into FIAFIELD.ZMTR1TBL");
ee.printStackTrace (); // ignore
c.commit ();
catch (SQLException ee)
ee.printStackTrace ();
finally
if (s!= null) try {s.close ();}catch (SQLException e1){}
if (c!= null) try {c.close ();}catch (SQLException e2){}
// The Consolidator class is not thread safe, and I will eventually
// need thread safety. The ConsolidatorManage class is thread safe.
//Consolidator ConsolidatorXX = new Consolidator();
ConsolidatorManager ConsolidatorXX = new ConsolidatorManager();
// Line 386
// Try opening a connection. Sample11 does not open a connection, but it seems
// like a logical first thing to do.
// At least with this connection the DropPublication, and AddPublication functions
// appear to work, or at least they do not throw exceptions. The DropPublication
// throws an exception if a publication does not exist? I tested this and indeed
// if I call the DropPublication function, and do not create the Publication again
// when I reenter the program the DropPublication function throws an exception, and
// produces the correct error message(The publication does not exist). There is hope.
// It is very disturbing that the program fails unless the webtogo.ora file is not
// in the current working directory. Because the OpenConnection functions of both
// the ResourceManager, and ConsolidatorManager both appear to need access to the
// webtogo.ora file, and they are finding them in the current directory, the
// logical conclusion is that both of the classes are attempting to open the
// webtogo.ora with the relative path webtogo.ora, and not the absolute path
// OraHomeLite/Mobile/Server/Bin/webtogo.ora. As this has to be the case, why
// is this very important fact not in the documentation? Or, am I wrong?
Connection conn = null;
try
//ConsolidatorXX.OpenConnection(CONS_SCHEMA,
//DEFAULT_PASSWORD);
//ConsolidatorXX.OpenConnection(CONS_SCHEMA,
//DEFAULT_PASSWORD,
//"jdbc:oracle:oci8:@WEBTOGO.WORLD");
conn = DriverManager.getConnection
("jdbc:oracle:oci8:@WEBTOGO.WORLD",
CONS_SCHEMA,DEFAULT_PASSWORD);
//conn = DriverManager.getConnection
//("jdbc:oracle:oci8:@WEBTOGO.WORLD",
//"SYSTEM","phwphw");
ConsolidatorXX.OpenConnection(conn);
catch (Throwable e)
e.printStackTrace(); //ignore error
// Publication name
Publication = "ZMTR1PUB";
try
ConsolidatorXX.DeinstantiateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
System.out.println("Could not Deinstantiate Subscription ZMPT1UA");
e.printStackTrace(); //ignore error
// Line 448
// There is no Consolidator.OpenConnection in the orginal sample11.java code.
// Why?. It appears to be neccessary. The only way I can make the sample11 code
// or this program work is to open a jdbc connection with the Consolidator.OpenConnection
// function. I assume that somehow the Consolidator.OpenConnection function was
// deleted from sample11.java.
// This try to drop a publication index does not work, because when I try
// to recreate the index in the following code it warns me that I have a
// bad column name for the index. So it thinks the index still exist.
// Why?. How do I get rid of the index?
try
ConsolidatorXX.DropPublicationItemIndex("ZMTR1IX1");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublicationItem("ZMTR1ITM");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublication(Publication);
catch (Throwable e)
e.printStackTrace(); //ignore error
try
//ConsolidatorXX.CreatePublication(Publication, Consolidator.OKPI_CREATOR_ID,
//"zMTR1.%s", null);
ConsolidatorXX.CreatePublication(Publication, Consolidator.OKAPI_WINCE,
"zMTR1.%s", null);
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.DropPublicationItemIndex("ZMTR1IX1");
catch (Throwable e)
e.printStackTrace(); //ignore error
try
ConsolidatorXX.CreatePublicationItem("ZMTR1ITM","FIAFIELD","ZMTR1TBL", "F",
"SELECT * FROM FIAFIELD.ZMTR1TBL", null, null);
catch (Throwable e)
e.printStackTrace();
System.out.println("Begin of how can drop this index and get rid of the warning?");
// Line 522
// I defined the index ZMTR1IX1 originally on the variable subp, and did not get
// any warning. I then changed the index variable for the index to id, and started
// receiving the warning to check the index column for typographical errors. Even
// if I change the index variable back to subp, I continue to receive the warning.
// How do I get rid of the index and the warning, so I can recreate the index for
// another variable? I quess the real question is "How to I completely remove a
// publication, and all of its parts so I can start over?
try
ConsolidatorXX.CreatePublicationItemIndex(
"ZMTR1IX1", "ZMTR1ITM", "I", "id");
catch (Throwable e)
e.printStackTrace ();
System.out.println("End of how can drop this index and get rid of the warning?");
try
ConsolidatorXX.AddPublicationItem(
Publication, "ZMTR1ITM", null, null, "S", null, null);
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.CreateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.InstantiateSubscription(Publication, "ZMPT1UA");
catch (Throwable e)
e.printStackTrace ();
try
ConsolidatorXX.CloseConnection();
if(conn != null)
conn.close();
catch (Throwable e)
e.printStackTrace(); //ignore error
// Obsolete or depreciated function, according to documentation?
oracle.mobile.admin.ResourceManager.commitTransaction();
oracle.mobile.admin.ResourceManager.closeConnection();
End of Publish.java code
Begin Compile.bat
set CLASSPATH = .;D:\jdk1.4.0\lib\tools.jar;D:\OraLite501\MOBILE\classes\CONSOLIDATOR.JAR;D:\OraLite501\MOBILE\SERVER\BIN\WEBTOGO.JAR;D:\OraLite501\jdbc\lib\classes12.zip;D:\OraLite501\MOBILE\classes\classgen.jar;D:\OraLite501\MOBILE\classes\servlet.jar;D:\OraLite501\MOBILE\CLASSES\OLITE40.JAR
set PATH= d:\jdk1.4.0\jre\bin\server;d:\jdk1.4.0\bin;D:\OraLite501\bin;D:\OraLite501\Mobile\Server\bin;D:\oracle\ora92\bin;D:\OraLite501\MOBILE\sdk\bin
d:\jdk1.4.0\bin\javac Publish.java
End Compile.bat
Begin Run.bat
set CLASSPATH= .;D:\jdk1.4.0\lib\tools.jar;D:\OraLite501\MOBILE\classes\CONSOLIDATOR.JAR;D:\OraLite501\MOBILE\SERVER\BIN\WEBTOGO.JAR;D:\OraLite501\jdbc\lib\classes12.zip;D:\OraLite501\MOBILE\classes\classgen.jar;D:\OraLite501\MOBILE\classes\servlet.jar;D:\OraLite501\MOBILE\CLASSES\OLITE40.JAR
set PATH= d:\jdk1.4.0\jre\bin\server;d:\jdk1.4.0\bin;D:\OraLite501\bin;D:\OraLite501\Mobile\Server\bin;D:\oracle\ora92\bin;D:\OraLite501\MOBILE\sdk\bin
d:\jdk1.4.0\bin\java Publish
End Run.bat
Begin webtogo.ora
USE_SYSTEM_CLASSPATH = NO
MODE = SERVER
PORT = 80
BASE_URL=/webtogo
ADMIN_TNS_NAME=WEBTOGO.WORLD
ADMIN_JDBC_URL=jdbc:oracle:oci8:@WEBTOGO.WORLD
APPLET_USE_THIN_JDBC = YES
THIN_JDBC_URL=jdbc:oracle:thin:@YGGDRASILL:1521:FIA.YGGDRASILL.CFR.MSSTATE.EDU
SITE_OFFLINE_PERIOD=0
CUSTOM_WORKSPACE=no
CUSTOM_DIRECTORY=myworkspace
DEFAULT_PAGE=myfirstpage.html
ADMIN_USER=8B37E78535B55525292A3A2929292999
ADMIN_PASSWORD=873515A838B85828292A3A2929292999
[EXTERNAL_AUTHENTICATION]
#CLASS=com.acme.SampleAuthenticator
# Web-to-go workspace's font
FONT_NAME=Arial
[FILESYSTEM]
#ROOT_DIR=%WEBTOGO_HOME%\server
#TYPE=O8
#TYPE=OL
#TYPE=OS
# Cache size in MBs
#CACHE_SIZE=10
MAX_CONNECTIONS=4
[DEBUG]
#ENABLE=YES
# The log file name.
#LOG_FILE=test.log
# Machine name and port where wsh.exe -m is running. Web-to-go
# will send debug output to that machine.
#MACHINE=
#PORT=100
[APPLICATIONS]
XMLFILE = ws1.xml
PACK_HELP=D:\OraLite501\mobile\doc\wtg\html\wtgdep.htm
[PUBLIC]
oracle.lite.sync.ConsolidatorServlet=/Consolidator
[CONSOLIDATOR]
# Installer will change these values
SERVER_VERSION=8.1.5
# 8.0.5 or 8.1.5
# Installer won't change these values
MAX_THREADS=3
JDBC_DRIVER=oracle.jdbc.driver.OracleDriver
CREATE_USER_OPTIONS_O8I=PROFILE CONSOLIDATOR_CLIENT_P DEFAULT TABLESPACE USERS QUOTA UNLIMITED ON USERS TEMPORARY TABLESPACE INDX QUOTA UNLIMITED ON INDX
CREATE_USER_OPTIONS_O8=PROFILE CONSOLIDATOR_CLIENT_P DEFAULT TABLESPACE USR QUOTA UNLIMITED ON USR
TEMPORARY TABLESPACE TEMPORARY QUOTA UNLIMITED ON TEMPORARY
TEMP=c:\\temp
WTG_PROXY_PORT=80
TRACE=NO
TRACE_ALL=NO
End webtogo.ora
Begin Mobile Server tnsnames.ora file
# TNSNAMES.ORA Network Configuration File: D:\OraLite501\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
WEBTOGO.WORLD =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = YGGDRASILL.CFR.MSSTATE.EDU)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
WEBTOGO.WORLD.YGG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = YGGDRASILL.CFR.MSSTATE.EDU)(PORT = 1521))
(CONNECT_DATA =
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
End Mobile Server tnsnames.ora file
Begin Database tnsnames.ora file
# TNSNAMES.ORA Network Configuration File: D:\oracle\ora92\network\admin\tnsnames.ora
# Generated by Oracle configuration tools.
INST1_HTTP.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = SHARED)
(SERVICE_NAME = MODOSE)
(PRESENTATION = http://HRService)
FIA.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA.YGGDRASILL.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill.cfr.msstate.edu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
FIA.YGG =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = yggdrasill.cfr.msstate.edu)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = FIA.YGGDRASILL.CFR.MSSTATE.EDU)
EXTPROC_CONNECTION_DATA.CFR.MSSTATE.EDU =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = IPC)(KEY = EXTPROC0))
(CONNECT_DATA =
(SID = PLSExtProc)
(PRESENTATION = RO)
End Database tnsnames.ora file
Maybe you are looking for
-
Exection of the messages in specified sequence
Hi, Scenario : Proxy - Soap MM : Multi mapping Interface determination : enhanced ID Single incoming message and Multi mapping split that into 3 target messages. Mesg_1 Mesg_2 Mesg_3 No problem till this step but when the messages are actually sent,
-
Nokia 6303 Classic Displays CALL only instead of c...
I've an orange sim card and this seems to be only happening with this network. I do not know who is calling me. The display shows "call" even though the number of the person that is calling me is on my contact list. This happens with all numbers. St
-
Time Machine vs Backup Clarification
Hello all, I need to reinstall my OS (10.6.8), and recently purchased an external hard drive to backup all my data beforehand. I intend to use Time Machine to backup said data before reinstalling the operating system from the DVD, but want to avoid r
-
Screen: Cannot find terminfo entry for 'rxvt-unicode', works in root
I'm using screen (http://www.archlinux.org/packages/14519/) and it works fine under root, but it keeps saying it can't find the terminfo entry for anything when I'm under a different user ('linux', 'xterm', 'rxvt-unicode'). First I tried setting URxv
-
Searching for movie data in file "DSC_0007.AVI". HELP
I've been getting this message for sometime and can't figure out how to get rid of it. I assume there is a iMovie database file the is looking for this file that obviously no longer exists. Anyone know how to get rid of this, edit the database file o