Moved samples
This commit is contained in:
@@ -1,8 +0,0 @@
|
|||||||
The ADO sample is a wrapper for the ADO classes. This demonstrates how
|
|
||||||
to write JACOB wrappers.
|
|
||||||
|
|
||||||
The applet sample shows how to use JACOB in an applet. The trick is to
|
|
||||||
initialize and use the COM object in the same thread.
|
|
||||||
|
|
||||||
The test directory has numerous tests that test various features
|
|
||||||
of the JACOB functionality.
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
package com.jacob.samples.JavaWebStart;
|
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.io.FileOutputStream;
|
|
||||||
import java.io.InputStream;
|
|
||||||
|
|
||||||
import com.jacob.com.LibraryLoader;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* It is sometimes necessary to run Jacob without being able to install the dll
|
|
||||||
* on the client machine. This is true in JavaWebStart (JWS) and possibly Applet
|
|
||||||
* (assuming security allows access to the file system). The obvious thing to do
|
|
||||||
* here is to jar up the Jacob.dll so that it can be downloaded the client along
|
|
||||||
* with the rest of the resources. This is simple except that the System.Load()
|
|
||||||
* function does not search jar files for DLLs. It searches the classpath. The
|
|
||||||
* work around to this problem is to write the DLL to a temporary file and then
|
|
||||||
* explicitly load the DLL calling passing the full path to the temporary file.
|
|
||||||
*
|
|
||||||
* The following code demonstrates this idea.
|
|
||||||
*
|
|
||||||
* @author joe
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class DLLFromJARClassLoader {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Load the DLL from the classpath rather than from the java path. This code
|
|
||||||
* uses this class's class loader to find the dell in one of the jar files
|
|
||||||
* in this class's class path. It then writes the file as a temp file and
|
|
||||||
* calls Load() on the temp file. The temporary file is marked to be deleted
|
|
||||||
* on exit so the dll is deleted from the system when the application exits.
|
|
||||||
* <p>
|
|
||||||
* Derived from ample code found in Sun's java forums <p.
|
|
||||||
*
|
|
||||||
* @return true if the native library has loaded, false if there was a
|
|
||||||
* problem.
|
|
||||||
*/
|
|
||||||
public boolean loadLibrary() {
|
|
||||||
try {
|
|
||||||
// this assumes that the dll is in the root dir of the signed
|
|
||||||
// jws jar file for this application.
|
|
||||||
//
|
|
||||||
// Starting in 1.14M6, the dll is named by platform and architecture
|
|
||||||
// so the best thing to do is to ask the LibraryLoader what name we
|
|
||||||
// expect.
|
|
||||||
// this code might be different if you customize the name of
|
|
||||||
// the jacob dll to match some custom naming convention
|
|
||||||
InputStream inputStream = getClass().getResource(
|
|
||||||
"/" + LibraryLoader.getPreferredDLLName() + ".dll")
|
|
||||||
.openStream();
|
|
||||||
// Put the DLL somewhere we can find it with a name Jacob expects
|
|
||||||
File temporaryDll = File.createTempFile(LibraryLoader
|
|
||||||
.getPreferredDLLName(), ".dll");
|
|
||||||
FileOutputStream outputStream = new FileOutputStream(temporaryDll);
|
|
||||||
byte[] array = new byte[8192];
|
|
||||||
for (int i = inputStream.read(array); i != -1; i = inputStream
|
|
||||||
.read(array)) {
|
|
||||||
outputStream.write(array, 0, i);
|
|
||||||
}
|
|
||||||
outputStream.close();
|
|
||||||
temporaryDll.deleteOnExit();
|
|
||||||
// Ask LibraryLoader to load the dll for us based on the path we
|
|
||||||
// set
|
|
||||||
System.setProperty(LibraryLoader.JACOB_DLL_PATH, temporaryDll
|
|
||||||
.getPath());
|
|
||||||
LibraryLoader.loadJacobLibrary();
|
|
||||||
return true;
|
|
||||||
} catch (Throwable e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
Binary file not shown.
@@ -1,75 +0,0 @@
|
|||||||
package com.jacob.samples.servlet;
|
|
||||||
|
|
||||||
import javax.servlet.*;
|
|
||||||
import javax.servlet.http.*;
|
|
||||||
import java.io.*;
|
|
||||||
|
|
||||||
import com.jacob.com.*;
|
|
||||||
import com.jacob.activeX.*;
|
|
||||||
|
|
||||||
public class JacobScript extends javax.servlet.http.HttpServlet
|
|
||||||
{
|
|
||||||
public void doGet(HttpServletRequest req,
|
|
||||||
HttpServletResponse res)
|
|
||||||
throws ServletException
|
|
||||||
{
|
|
||||||
PrintWriter out = null;
|
|
||||||
try
|
|
||||||
{
|
|
||||||
res.setContentType("text/html");
|
|
||||||
out = res.getWriter();
|
|
||||||
// display a form
|
|
||||||
out.println("<h1>Enter a VBScript Expression</h1>");
|
|
||||||
out.println("<form method=\"POST\" action=\"/JacobScript\">");
|
|
||||||
out.println("<input name=\"expr\" type=\"text\" width=64>");
|
|
||||||
out.println("<input type=\"submit\">");
|
|
||||||
out.println("</form>");
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
out.println("<H2>Error:"+e+"</H2>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public void doPost(HttpServletRequest req,
|
|
||||||
HttpServletResponse res)
|
|
||||||
throws ServletException
|
|
||||||
{
|
|
||||||
PrintWriter out = null;
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
res.setContentType("text/html");
|
|
||||||
out = res.getWriter();
|
|
||||||
// get what they typed in
|
|
||||||
String expr = (String)req.getParameter("expr");
|
|
||||||
// make sure we have a session
|
|
||||||
HttpSession session = req.getSession(true);
|
|
||||||
Dispatch sControl = null;
|
|
||||||
if (session.isNew())
|
|
||||||
{
|
|
||||||
// initialize the control and store it on the session
|
|
||||||
String lang = "VBScript";
|
|
||||||
ActiveXComponent sC = new ActiveXComponent("ScriptControl");
|
|
||||||
sControl = sC.getObject();
|
|
||||||
Dispatch.put(sControl, "Language", lang);
|
|
||||||
session.putValue("control", sControl);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
sControl = (Dispatch)session.getValue("control");
|
|
||||||
}
|
|
||||||
Variant result = Dispatch.call(sControl, "Eval", expr);
|
|
||||||
// display a form
|
|
||||||
out.println("<h1>Enter a VBScript Expression</h1>");
|
|
||||||
out.println("<form method=\"POST\" action=\"/JacobScript\">");
|
|
||||||
out.println("<input name=\"expr\" type=\"text\" value=\""+expr+"\" width=64>");
|
|
||||||
out.println("<input type=\"submit\">");
|
|
||||||
out.println("</form>");
|
|
||||||
out.println("<H1>Jacob Response:</H1>");
|
|
||||||
out.println("<H2>"+result+"</H2>");
|
|
||||||
} catch (Exception e) {
|
|
||||||
e.printStackTrace();
|
|
||||||
out.println("<H2>Error:"+e+"</H2>");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,45 +0,0 @@
|
|||||||
This sample runs in Weblogic 5.1 as a servlet.
|
|
||||||
|
|
||||||
0. Rename JacobScript.java_nocompile to JacobScript.java
|
|
||||||
1. Compile this file (make sure you have jdk1.2 installed or the
|
|
||||||
javax.servlet.* classes in your classpath).
|
|
||||||
2. Make sure the weblogic policy file allows native access. The easiest
|
|
||||||
way is to replace the contents with this:
|
|
||||||
|
|
||||||
grant codeBase "file:d:/weblogic/-" {
|
|
||||||
permission java.security.AllPermission;
|
|
||||||
};
|
|
||||||
|
|
||||||
grant codeBase "file:/c:/classes/-" {
|
|
||||||
permission java.security.AllPermission;
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
grant codeBase "file:${java.home}/lib/ext/-" {
|
|
||||||
permission java.security.AllPermission;
|
|
||||||
};
|
|
||||||
|
|
||||||
grant {
|
|
||||||
permission java.security.AllPermission;
|
|
||||||
};
|
|
||||||
|
|
||||||
3. Add the servlet to the weblogic.properties file:
|
|
||||||
|
|
||||||
weblogic.httpd.register.JacobScript=JacobScript
|
|
||||||
|
|
||||||
4. Either add your CLASSPATH to weblogic.classpath in startWebLogic.cmd
|
|
||||||
or copy the com directory into weblogic/myserver/servletclasses
|
|
||||||
|
|
||||||
5. Copy the jacob/samples/servlet/* into weblogic/myserver/servletclasses
|
|
||||||
6. Start weblogic
|
|
||||||
|
|
||||||
7. Type the url: http://localhost:7001/JacobScript into the browser
|
|
||||||
(If you run on port 7001)
|
|
||||||
|
|
||||||
8. Enter a VBScript expression like:
|
|
||||||
1+2
|
|
||||||
Now
|
|
||||||
"hello" & " world"
|
|
||||||
etc.
|
|
||||||
and watch the MS Script control (which you must have installed)
|
|
||||||
evaluate and return the result.
|
|
||||||
Reference in New Issue
Block a user