Andrew,

Your code should be running the 'main' method that is defined in the Java code.

There is no constructor, for this class, so you code will fail.

You will need to create a String[], which is relatively easy using the
java.lang.reflect.Array Java class, and pass it into the main() method
(CF may actually do the translation for you if you use just a regular
Array, it may be worth checking).

Once you have your array, pass it in as an argument to the main()
method, and you should have what you need.

Mark

On 4/14/07, Phillip Duba <[EMAIL PROTECTED]> wrote:
> Andrew,
>
> I ran into this same issue doing stuff with SAML. Make sure you haven't
> moved the class file after it has been compiled. In other words, once
> you compile the Java class, you can't move it around to the classes
> library or some other directory. I don't know why, but ever time I moved
> my class file, the Init.init() call would fail. Also, ensure all the
> Apache XML libraries are in your CF classpath. Finally, you don't have a
> constructor on your class so your call should be: <cfset ret =
> myObj.main("input.xml")>. HTH,
>
> Phil
>
> -----Original Message-----
> From: Andrew Whone [mailto:[EMAIL PROTECTED]
> Sent: Friday, April 13, 2007 10:53 AM
> To: CF-Talk
> Subject: CF and Java
>
> I have some java code which I want to kick in from a coldfusion page
>
> e.g. <cfobject type="Java" class="IRMark" name="myObj">
>       <cfset ret=myObj.init("input.xml")
>
> It ought to be simple enough, pass the file name to the class and get
> the base64 number back.
> The Coldfusion documentation states:
> "Note: The init method is not a method of the object, but a ColdFusion
> identifier that calls the new function on the class constructor. So, if
> a Java object has an init method, a name conflict exists and you cannot
> call the object's init method."
> and I suspect this is where my problem lies but my java is still basic.
> I would be very grateful if anyone could at least give me a few pointers
> to solve this problem. I have tried lots of things without any success.
>
> The Java Code:
>
> import java.io.*;
> import javax.xml.parsers.*;
> import java.security.*;
>
> import org.w3c.dom.*;
>
> import org.apache.xml.security.signature.*;
> import org.apache.xml.security.transforms.*;
> import org.apache.xml.security.Init;
>
> import org.bouncycastle.util.encoders.Base64;
>
>
> /**
>  * This code generates an IRmark value for an input document.
>  * The value is a base64 encoded SHA1 digest of a signature
>  * transform over a certain style of document. The value has
>  * to be placed inside documents to be signed by the XPE when
>  * used in a EDS/IR deployment.
>  *
>  * The code has a number of jar dependencies:-
>  *      xmlsec.jar - The Apache XML Security Library
>  *      log4j-1.2.5.jar - The Apache Log utility
>  *  xalan.jar - Apache XSLT/XPath processor
>  *  xercesImpl.jar - Apache XML processor
>  *  bc-jce-jdk13-114.jar - Bouncy Castle JCE library
>  *
>  *  The Bouncy Castle JCE provider is automatically downloaded
>  *  by the Apache XML sec library build so you may already have
>  *  that.
>  */
>
>
>    public class IRMark {
>
>    /**
>     * Generate and print the IRmark.
>     *
>     * @param args - Pass the filename of the input document
>     * @throws Exception
>     */
>         public static void main(String args[]) throws Exception {
>
>                 // Init the Apache XML security library
>                 Init.init();
>
>                 // Check we are given a file to work with
>                 if (args.length!=1) {
>                         System.out.println("Use: IRmark <file> ");
>                         return;
>                 }
>
>                 // Open the input file
>                 FileInputStream fis=null;
>                 try {
>                         fis=new FileInputStream(args[0]);
>                 } catch (FileNotFoundException e) {
>                         System.out.println("The file " + args[0] + "
> could not be opened.");
>                         return;
>                 }
>
>                 // Load file into a byte array
>                 byte[] data=null;
>                 try {
>                         int bytes=fis.available();
>                         data=new byte[bytes];
>                         fis.read(data);
>                 } catch (IOException e) {
>                         System.out.println("Error reading file.");
>                         e.printStackTrace();
>                 }
>
>                 // First part is to run the a transform over the input
> to extract the
>                 // fragment to be digested. This is done by setting up a
> Transforms
>                 // object from a Template and then executing against the
> input document
>
>                 // The transforms to be performed are specified by using
> the template XML below.
>         String transformStr =
>         "<?xml version='1.0'?>\n"
>         + "<dsig:Transforms
> xmlns:dsig='http://www.w3.org/2000/09/xmldsig#'
> xmlns:gt='http://www.govtalk.gov.uk/CM/envelope'
> xmlns:ir='http://www.govtalk.gov.uk/taxation/CISrequest'>\n"
>         + "<dsig:Transform
> Algorithm='http://www.w3.org/TR/1999/REC-xpath-19991116'>\n"
>         + "<dsig:XPath>\n"
>         +
> "count(ancestor-or-self::node()|/gt:GovTalkMessage/gt:Body)=count(ancest
> or-or-self::node())\n"
>                 + " and count(self::ir:IRmark)=0 \n"
>                 + " and count(../self::ir:IRmark)=0 \n"
>                 + "</dsig:XPath>\n"
>         + "</dsig:Transform>\n"
>         + "<dsig:Transform
> Algorithm='http://www.w3.org/TR/2001/REC-xml-c14n-20010315#'/>\n"
>         + "</dsig:Transforms>\n"
>         ;
>
>                 // Parse the transform details to create a document
>                 DocumentBuilderFactory
> dbf=DocumentBuilderFactory.newInstance();
>                 dbf.setNamespaceAware(true);
>                 DocumentBuilder db=dbf.newDocumentBuilder();
>                 Document doc=db.parse(new
> ByteArrayInputStream(transformStr.getBytes()));
>
>                 // Construct a Apache security Transforms object from
> that document
>                 Transforms transforms = new
> Transforms(doc.getDocumentElement(), null);
>
>                 // Now perform the transform on the input to get the
> results.
>         XMLSignatureInput input = new XMLSignatureInput(data);
>         XMLSignatureInput result = transforms.performTransforms(input);
>
>         // Uncomment this line to see transform output
>         // System.out.println(new String(result.getBytes()));
>
>         // Second part is to run output via SHA1 digest
>         // This is done via the standard java.security API
>                 MessageDigest md = MessageDigest.getInstance("SHA");
>                 md.update(result.getBytes());
>                 byte[] digest=md.digest();
>
>                 // And finally print a Base64 of the digest with
>                 // The help of the BouncyCastle JCE library
>                 System.out.println("IRmark: " + new
> String(Base64.encode(digest)));
>    }
> }
> Thanks A+
>
>
>
> 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~|
Create robust enterprise, web RIAs.
Upgrade & integrate Adobe Coldfusion MX7 with Flex 2
http://www.adobe.com/products/coldfusion/flex2/?sdid=RVJP

Archive: 
http://www.houseoffusion.com/groups/CF-Talk/message.cfm/messageid:275186
Subscription: http://www.houseoffusion.com/groups/CF-Talk/subscribe.cfm
Unsubscribe: http://www.houseoffusion.com/cf_lists/unsubscribe.cfm?user=89.70.4

Reply via email to