Accessing Act! from Java

Java/J2EE COM Interoperability Products Page

This example demonstrates how to access Act! from Java. J-Integra® for COM is a Java interoperability component that bridges Java and Act!. It provides bi-directional access of Java objects and COM components.

// A pure Java client which lists all Act! contacts. 
// 
// This is a simple Java Client which accesses Act!  This client will run on any 
// machine that has a standard JVM, including UNIX.  It requires no native code.  All that 
// is needed is a TCP/IP link to the machine running Act.  It works with Java 2. 
// 
// This example uses the J-Integra® pure Java-COM bridge, available from 
// http://j-integra.intrinsyc.com/ 
// 
// Prior to building this example, create an 'act' subdirectory and run the J-Integra® 
// 'com2java' tool to generate the pure Java proxies that can be used to acccess Act! 
// as though it were a Java application.  Specify \Program Files\Symantec\ACT\act.tlb 
// as the input type library, 'act' as the package name, and the act subdirectory you 
// created as the output directory.  This step need only be done once -- the 'com2java' 
// tool is not used at runtime. 
// 
// Questions & comments to: [email protected] 
 
public class ActClient { 
  public static void main(String args[]) throws Exception { 
    try { 
 
      // If running this client under Windows then put the J-Integra® 'bin' directory in your path 
      // and leave the following line commented, otherwise run dcomcnfg (Start|Run|DCOMCNFG) 
      // on the machine running Act! and grant a specific user default launch and access permissions, 
      // and then uncomment the following line, specifying the appropriate domain/user/password: 
      // com.linar.jintegra.AuthInfo.setDefault("NT DOMAIN", "USER", "PASSWORD"); 
 
      // Start Act!  If you are not running this client on the same machine as Act! (for example 
      // if you are running it on a UNIX box) then pass the host name of the Act! machine as a 
      // parameter 
      act.CActAppObj actApp = new act.CActAppObj(); 
 
      // Wait for Act! to initialize 
      while (!actApp.isDBOpen()) { 
        Thread.sleep(2000); 
      } 
 
      // What version are we accessing? 
      System.out.println("Act! version is " + actApp.getActVersion()); 
 
      // Get hold of the views 
      act.IAIViews views = new act.IAIViewsProxy(actApp.views()); 
 
      // Create the Contact List view. 
      short type = 2; 
      String name = "contact list"; 
      act.IAIContactListView cl = new act.IAIContactListViewProxy(views.create(type, name)); 
 
      // Create the Contact Grid 
      act.IAIGrid grid = new act.IAIGridProxy(cl.getGrid()); 
 
      // Get all the column names 
      String colNames[] = new String[grid.getColumnCount()]; 
      for (int i = 0; i < colNames.length; i++) { 
        colNames[i] = grid.getColumnName(i); 
      } 
 
      // For each row 
      for (int row = 0; row < grid.getRowCount(); row++) { 
        System.out.println("Row: " + row); 
        // For each column 
        for (int col = 0; col < colNames.length; col++) { 
 
// Print out the column value 
          System.out.println("  " + colNames[col] + ": " + grid.getField(col, row)); 
        } 
      } 
 
    } finally { 
      // Release all COM object references that have not been garbage collected.  Call this 
      // just once, prior to exiting the JVM. 
      com.linar.jintegra.Cleaner.releaseAll(); 
    } 
  } 
}