[jboss-user] [JBoss Seam] - SWTException: Invalid thread access
hispeedsurfer
do-not-reply at jboss.com
Fri Oct 13 06:19:25 EDT 2006
Hello,
I have try to use Eclipse SWT with a Seam-Application.
But sometimes, not every time, I receive an exception caused by:
SWTException: Invalid thread access
Here the class use SWT:
| package org.jboss.util;
|
| import org.eclipse.swt.SWT;
| import org.eclipse.swt.ole.win32.OleAutomation;
| import org.eclipse.swt.ole.win32.OleClientSite;
| import org.eclipse.swt.ole.win32.OleFrame;
| import org.eclipse.swt.ole.win32.Variant;
| import org.eclipse.swt.widgets.Display;
| import org.eclipse.swt.widgets.Shell;
|
| public class OLEaccess {
|
| private static Display display = new Display();
| public OLEaccess(){
| }
| public static int OUTLOOK_MAIL_ITEM = 0;
|
|
|
| private Shell shell = new Shell(display);
|
| private OleFrame frm = new OleFrame(shell, SWT.NONE);
|
| private OleClientSite site = new OleClientSite(frm, SWT.NONE, "Outlook.Application");
|
| private OleAutomation auto = new OleAutomation(site);
|
| private int[] GetNamespaceDispId = auto
| .getIDsOfNames(new String[] { "GetNamespace" });
|
| private Variant Namespace = auto.invoke(GetNamespaceDispId[0],
| new Variant[] { new Variant("MAPI") });
|
| private OleAutomation NamespaceAutomation = Namespace.getAutomation();
|
| private OleAutomation mailItemAutomation;
|
|
| public String send(String to, String subject, String bodyTxt) {
| int[] LogonDispId = NamespaceAutomation
| .getIDsOfNames(new String[] { "Logon" });
|
| int[] LogoffDispId = NamespaceAutomation
| .getIDsOfNames(new String[] { "Logoff" });
|
| NamespaceAutomation.invoke(LogonDispId[0], new Variant[] {
| new Variant("YOUR MAIL ACCOUNT"), new Variant("YOUR PASSWORD"),
| new Variant(true), new Variant(true) });
|
| int[] CreateItemDispId = auto
| .getIDsOfNames(new String[] { "CreateItem" });
|
| Variant mailItem = auto.invoke(CreateItemDispId[0],
| new Variant[] { new Variant(OUTLOOK_MAIL_ITEM) });
|
| mailItemAutomation = mailItem.getAutomation();
|
| int[] ToPropertyDispId = mailItemAutomation
| .getIDsOfNames(new String[] { "To" });
|
| mailItemAutomation.setProperty(ToPropertyDispId[0], new Variant(
| "YOUR " +to));
|
| int[] SubjectPropertyDispId = mailItemAutomation
| .getIDsOfNames(new String[] { "Subject" });
|
| mailItemAutomation
| .setProperty(SubjectPropertyDispId[0], new Variant(
| subject +" "
| + System.currentTimeMillis()));
|
| int[] BodyPropertyDispId = mailItemAutomation
| .getIDsOfNames(new String[] { "Body" });
|
| mailItemAutomation.setProperty(BodyPropertyDispId[0], new Variant(
| bodyTxt));
|
| int[] SendDispId = mailItemAutomation
| .getIDsOfNames(new String[] { "Send" });
|
| mailItemAutomation.invoke(SendDispId[0]);
|
| NamespaceAutomation.invoke(LogoffDispId[0]);
|
|
| return "send";
| }
|
| public boolean dispose(){
| boolean rs = true;
| shell.dispose();
|
| auto.dispose();
|
| NamespaceAutomation.dispose();
|
| mailItemAutomation.dispose();
|
| site.deactivateInPlaceClient();
| site.dispose();
|
| frm.dispose();
| return rs;
| }
| }
|
and the EJB
| package org.jboss.business;
|
| import java.io.Serializable;
|
| import javax.ejb.Remove;
| import javax.ejb.Stateful;
| import javax.ejb.Stateless;
|
| import org.jboss.seam.annotations.Name;
| import org.jboss.seam.annotations.Scope;
| import org.jboss.seam.annotations.Destroy;
| import org.jboss.seam.ScopeType;
| import org.jboss.util.OLEaccess;
|
| @Stateful
| @Name("outlookAccess")
| @Scope(ScopeType.SESSION)
| public class OutlookAccessAction implements OutlookAccess, Serializable {
|
| private OLEaccess ole = new OLEaccess();
|
| public String doAction()
| {
| ole.send("test at test.de", "Invoke SWT fom J2EE Webapp", "was langw wärt wird endlich gut");
| //ole.dispose();
| System.out.println("Action Called");
| return "success";
| }
|
| @Destroy @Remove
| public void destroy() {
| ole.dispose();
| }
| }
|
|
All swt dependencies are added to project.
Any idea?
Thanks
Andreas
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=3978117#3978117
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=3978117
More information about the jboss-user
mailing list