Mapping COM Types to ComfyJ Classes. This can be used when you work with COM within Java objects.
For installation instructions click the link above or see readme. txt file inside the ComfyJ delivery package.
Answers to commonly asked questions about getting started and working with ComfyJ.
javax.el.ELException: /products/jni/layout/downloadWidget.xhtml: Error reading 'evaluationInfo' on type com.teamdev.site.jsf.beans.product.ProductPageHandler at com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:48) at com.sun.facelets.compiler.UIInstructions.encodeBegin(UIInstructions.java:39) at com.sun.facelets.compiler.UILeaf.encodeAll(UILeaf.java:149) at javax.faces.component.UIComponent.encodeAll(UIComponent.java:942) at com.sun.facelets.FaceletViewHandler.renderView(FaceletViewHandler.java:592) at teamdev.jsf.ai.renderView(SourceFile:49) at teamdev.jsf.cl.renderView(SourceFile:405) at com.sun.faces.lifecycle.RenderResponsePhase.execute(RenderResponsePhase.java:109) at com.sun.faces.lifecycle.Phase.doPhase(Phase.java:100) at com.sun.faces.lifecycle.LifecycleImpl.render(LifecycleImpl.java:139) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:266) at org.sevenhats.util.servlet.AbstractServletWrapper.service(AbstractServletWrapper.java:28) at org.sevenhats.jsf.impl.FacesServletWrapper.service(FacesServletWrapper.java:79) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:82) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:265) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:107) at org.acegisecurity.intercept.web.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:72) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:166) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.AbstractProcessingFilter.doFilter(AbstractProcessingFilter.java:271) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.ui.logout.LogoutFilter.doFilter(LogoutFilter.java:110) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.context.HttpSessionContextIntegrationFilter.doFilter(HttpSessionContextIntegrationFilter.java:249) at org.acegisecurity.util.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:275) at org.acegisecurity.util.FilterChainProxy.doFilter(FilterChainProxy.java:149) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at com.teamdev.site.jsf.filter.NoCacheFilter.doFilter(NoCacheFilter.java:48) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at com.teamdev.site.jsf.filter.ForwardFilter.doFilter(ForwardFilter.java:55) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at org.sevenhats.web.transaction.TransactionFilter.doFilter(TransactionFilter.java:48) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at org.apache.myfaces.webapp.filter.ExtensionsFilter.doFilter(ExtensionsFilter.java:301) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at teamdev.jsf.util.ResourceFilter.doFilter(SourceFile:93) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at org.sevenhats.web.common.FilterMappingFilter.doFilter(FilterMappingFilter.java:60) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.common.WelcomeFileSupportFilter.doFilter(WelcomeFileSupportFilter.java:74) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.common.UrlPathMappingSupportFilter.doFilter(UrlPathMappingSupportFilter.java:60) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.impl.ScopeRegistrationFilter.doFilter(ScopeRegistrationFilter.java:56) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.sevenhats.web.common.TargetBundleAwareServlet.service(TargetBundleAwareServlet.java:79) at org.eclipse.equinox.http.helper.ContextInitParametersServletAdaptor.service(ContextInitParametersServletAdaptor.java:34) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:70) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:255) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:285) at org.mortbay.jetty.servlet.Dispatcher.forward(Dispatcher.java:126) at org.eclipse.equinox.http.servlet.internal.RequestDispatcherAdaptor.forward(RequestDispatcherAdaptor.java:30) at com.teamdev.site.jsf.filter.ForwardFilter.doFilter(ForwardFilter.java:49) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at org.sevenhats.web.transaction.TransactionFilter.doFilter(TransactionFilter.java:63) at org.sevenhats.web.common.FilterMappingFilter$FilterChainExtension.doFilter(FilterMappingFilter.java:93) at org.sevenhats.web.common.FilterMappingFilter.doFilter(FilterMappingFilter.java:60) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.common.WelcomeFileSupportFilter.doFilter(WelcomeFileSupportFilter.java:74) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.common.UrlPathMappingSupportFilter.doFilter(UrlPathMappingSupportFilter.java:60) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.sevenhats.web.impl.ScopeRegistrationFilter.doFilter(ScopeRegistrationFilter.java:56) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.sevenhats.web.common.TargetBundleAwareServlet.service(TargetBundleAwareServlet.java:79) at org.eclipse.equinox.http.helper.ContextInitParametersServletAdaptor.service(ContextInitParametersServletAdaptor.java:34) at org.eclipse.equinox.http.helper.FilterServletAdaptor$FilterChainImpl.doFilter(FilterServletAdaptor.java:56) at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:83) at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:76) at org.eclipse.equinox.http.helper.FilterServletAdaptor.service(FilterServletAdaptor.java:37) at org.eclipse.equinox.http.servlet.internal.ServletRegistration.handleRequest(ServletRegistration.java:90) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.processAlias(ProxyServlet.java:111) at org.eclipse.equinox.http.servlet.internal.ProxyServlet.service(ProxyServlet.java:75) at javax.servlet.http.HttpServlet.service(HttpServlet.java:820) at org.eclipse.equinox.http.jetty.internal.HttpServerManager$InternalHttpServiceServlet.service(HttpServerManager.java:255) at org.mortbay.jetty.servlet.ServletHolder.handle(ServletHolder.java:487) at org.mortbay.jetty.servlet.ServletHandler.handle(ServletHandler.java:362) at org.mortbay.jetty.servlet.SessionHandler.handle(SessionHandler.java:181) at org.mortbay.jetty.handler.ContextHandler.handle(ContextHandler.java:726) at org.mortbay.jetty.handler.HandlerWrapper.handle(HandlerWrapper.java:139) at org.mortbay.jetty.Server.handle(Server.java:324) at org.mortbay.jetty.HttpConnection.handleRequest(HttpConnection.java:505) at org.mortbay.jetty.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:828) at org.mortbay.jetty.HttpParser.parseNext(HttpParser.java:514) at org.mortbay.jetty.HttpParser.parseAvailable(HttpParser.java:211) at org.mortbay.jetty.HttpConnection.handle(HttpConnection.java:380) at org.mortbay.io.nio.SelectChannelEndPoint.run(SelectChannelEndPoint.java:395) at org.mortbay.thread.BoundedThreadPool$PoolThread.run(BoundedThreadPool.java:450) Caused by: java.lang.NullPointerException at com.teamdev.site.jsf.beans.product.ProductPageHandler.getAcceptableProductFor(ProductPageHandler.java:82) at com.teamdev.site.jsf.beans.product.ProductPageHandler.getEvaluationInfo(ProductPageHandler.java:54) at sun.reflect.GeneratedMethodAccessor109.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at javax.el.BeanELResolver.getValue(BeanELResolver.java:62) at javax.el.CompositeELResolver.getValue(CompositeELResolver.java:53) at com.sun.faces.el.FacesCompositeELResolver.getValue(FacesCompositeELResolver.java:72) at com.sun.el.parser.AstValue.getValue(AstValue.java:117) at com.sun.el.ValueExpressionImpl.getValue(ValueExpressionImpl.java:192) at com.sun.facelets.el.ELText$ELTextVariable.writeText(ELText.java:184) at com.sun.facelets.el.ELText$ELTextComposite.writeText(ELText.java:108) at com.sun.facelets.compiler.TextInstruction.write(TextInstruction.java:45) ... 105 more
<dn id="_teamdev_ViewRoot" locale="en_US" renderKitId="HTML_BASIC" rendered="true" transient="false" viewId="/comfyj/documentation/index.xhtml">_QuipuKitValidationProcessor_<ValidationProcessor id="teamdevValidationProcessor" rendered="false" transient="false" useDefaultClientValidationPresentationForApplication="true" useDefaultServerValidationPresentationForApplication="true"/><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" ><html xmlns="http://www.w3.org/1999/xhtml"> <head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/> <meta name="AUTHOR" content="TeamDev Ltd."/> <meta name="CONTENT-LANGUAGE" content="en-US,ru"/> <meta name="COPYRIGHT" content=" 2009 TeamDev Ltd."/> <meta name="CACHE-CONTROL" content="Public"/><ComponentRef id="j_id3" rendered="true" transient="false"><meta name="Keywords" content="#{metaKeywords}"/></ComponentRef><ComponentRef id="j_id5" rendered="true" transient="false"><meta name="Description" content="#{metaDescription}"/></ComponentRef><title>#{productPage.productName} Documentation — #{propertyService.properties['company.name.full']}</title> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/reset.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/layout.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/main.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/menu.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/boxes.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/popup.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/print.css" type="text/css" media="print"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/handheld.css" type="text/css" media="handheld"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/edit.css" type="text/css" media="screen,projection"/><link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/products.css" type="text/css" media="screen,projection"/> <link rel="stylesheet" href="#{facesContext.externalContext.requestContextPath}/css/product_#{productName}.css" type="text/css" media="screen,projection"/><script src="#{facesContext.externalContext.requestContextPath}/js/jquery/jquery-1.2.6.pack.js" type="text/javascript"/> <script src="#{facesContext.externalContext.requestContextPath}/js/jquery/facebox.js" type="text/javascript"/> <script src="#{facesContext.externalContext.requestContextPath}/js/jquery/jquery.hoverIntent.minified.js" type="text/javascript"/> <script src="#{facesContext.externalContext.requestContextPath}/js/main.js" type="text/javascript"/> <script src="#{facesContext.externalContext.requestContextPath}/js/dlink.js?notitles&nomailevents" type="text/javascript"/><script src="/js/jquery/jquery.scrollTo.js" type="text/javascript"/><!--[if lt IE 7]> <link rel="stylesheet" type="text/css" media="all" href="/css/style_ie6.css"> <script src="/js/stylefix.js" type="text/javascript"></script> <![endif]--> <link rel="icon" href="/favicon.ico" type="image/x-icon"/> <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"/><link rel="alternate" type="application/rss+xml" title="TeamDev #{productPage.productName} Product News" href="http://support.teamdev.com/blogs/feeds/tags/#{productName}"/><link rel="alternate" type="application/rss+xml" title="TeamDev Company News" href="http://support.teamdev.com/blogs/feeds/tags/company_news"/> <link rel="alternate" type="application/rss+xml" title="TeamDev Products Release Notes" href="http://support.teamdev.com/blogs/feeds/tags/release_notes"/> <link rel="alternate" type="application/rss+xml" title="TeamDev Support Blog Posts Feed" href="http://support.teamdev.com/community/feeds/blogs?community=1"/> <link rel="alternate" type="application/rss+xml" title="TeamDev Support Documents Feed" href="http://support.teamdev.com/community/feeds/documents?community=1"/> </head> <body id="#{bodyId}"><AjaxSettings id="j_id16" progressMessage="teamdev.jsf.component.ajaxsettings.DefaultProgressMessage@1805ea2" rendered="true" sessionExpiration="teamdev.jsf.component.ajaxsettings.DefaultSessionExpiration@c4eedc" transient="false">progressMessage<DefaultProgressMessage id="j_id17" rendered="true" style="display: none;" transient="false"/>sessionExpiration<DefaultSessionExpiration confirmation="teamdev.jsf.component.confirmation.Confirmation@11de861" id="j_id102" rendered="true" transient="false"><Confirmation alignToInvoker="false" cancelButtonText="Reload later" captionText="Session Expired" closeOnOuterClick="false" details="A new session will be created when the page is reloaded" draggable="false" draggableByContent="true" height="160px" hidingTimeout="-1" id="j_id102--confirm_expiration" message="Your session has expired" minHeight="80px" minWidth="150px" modal="true" modalLayerStyle="background: black; filter: alpha(opacity=50); opacity: .50;" okButtonText="Reload page now" rendered="true" resizeable="false" showCloseWindowButton="false" showMessageIcon="true" transient="false" visible="false" width="400px"/></DefaultSessionExpiration></AjaxSettings><div id="Page"><h1 id="Logo_small"><a href="/"><img src="#{facesContext.externalContext.requestContextPath}/images/logos/logo_1.png" alt="#{propertyService.properties['company.name.full']} Home Page" title="#{propertyService.properties['company.name.full']} Home Page"/></a></h1><UINamingContainer id="menuSubview" rendered="true" transient="false"><UINamingContainer id="menuSubview" rendered="true" transient="false"><ul id="Menu"> <li class="orange_bg #{current=='product' ? 'current' : ''}"><a href="/products/"><span><img src="/images/menu/blank.gif" alt="Producs"/></span></a></li> <li class="green_bg #{current=='store' ? 'current' : ''}"><a href="/store/"><span><img src="/images/menu/blank.gif" alt="Store"/></span></a></li> <li class="violet_bg #{current=='support' ? 'current' : ''}"><a href="/support/"><span><img src="/images/menu/blank.gif" alt="Support"/></span></a></li> <li class="indigo_bg #{current=='services' ? 'current' : ''}"><a href="/services/"><span><img src="/images/menu/blank.gif" alt="Services"/></span></a></li> <li class="blue_bg lastItem #{current=='company' ? 'current' : ''}"><a href="/company/"><span><img src="/images/menu/blank.gif" alt="Company"/></span></a></li></ul></UINamingContainer></UINamingContainer><UINamingContainer id="submenuSubview" rendered="true" transient="false"><UIRepeat id="j_id22" offset="0" rendered="true" size="-1" transient="false" var="group"><ul class="SubMenu #{group.name}"><UIRepeat id="j_id24" offset="0" rendered="true" size="-1" transient="false" var="item"><li class="#{item.current ? 'active' : ''} #{item.menuType.value=='IMAGE' ? 'imagemenu' : ''}"><HtmlPanelGroup id="j_id26" rendered="false" transient="false"><span><HtmlGraphicImage id="j_id28" ismap="false" rendered="false" transient="false"/><HtmlOutputText escape="true" id="j_id29" rendered="false" transient="false"/></span></HtmlPanelGroup><HtmlPanelGroup id="j_id31" rendered="true" transient="false"><a href="#{item.url}" class="#{item.urlClass}" id="#{item.linkId}"><HtmlGraphicImage id="j_id33" ismap="false" rendered="false" transient="false"/><HtmlOutputText escape="true" id="j_id34" rendered="false" transient="false"/></a></HtmlPanelGroup></li></UIRepeat></ul></UIRepeat></UINamingContainer><div id="Content"><div class="clearfix mainText"> <div id="leftContent" class="Col4_123 serif"><HtmlForm enctype="application/x-www-form-urlencoded" id="j_id40" prependId="true" rendered="true" submitted="false" transient="false"><HtmlOutputText escape="false" id="j_id41" rendered="true" transient="false" value=""/><HtmlOutputText escape="false" id="j_id42" rendered="true" transient="false" value="<script type="text/javascript"> $(document).ready(function () { if (document.location.hash == "#releaseNotes") { $(window).scrollTo("#releaseNotesLink"); showNotes(); } }); </script>"/><HtmlOutputText escape="false" id="j_id43" rendered="true" transient="false" value=" <div class="container compensatetop"> <div class="Col3_1"> <h4> <span class="doctypes doctypes_multiline"> <a href="/downloads/comfyj/docs/ComfyJ-PGuide.html">Programmer's Guide</a> <small> <a href="/downloads/comfyj/docs/ComfyJ-PGuide.zip"><img src="/images/icons/files/documentation_zip.png" alt="zip" title="Download ZIP archive" /></a> <a href="/downloads/comfyj/docs/ComfyJ-PGuide.pdf"><img src="/images/icons/files/documentation_pdf.png" alt="pdf" title="Download PDF document" /></a> </small> </span> </h4> <ul class="documentation small"> <li><a href="/downloads/comfyj/docs/ComfyJ-PGuide.html#AEN98">Getting started</a></li> <li><a href="/downloads/comfyj/docs/ComfyJ-PGuide.html#ConfigSoftware">Configuring ComfyJ</a></li> <li><a href="/downloads/comfyj/docs/ComfyJ-PGuide.html#AEN206">COM integration</a></li> <li><a href="/downloads/comfyj/docs/ComfyJ-PGuide.html#CodeGen">Code generator</a></li> </ul> </div> <div class="Col3_2"> <h4>JavaDoc</h4> <ul class="documentation"> <li class="doctypes"> <a href="/downloads/comfyj/javadoc/index.html">Online documentation</a> <small> <a href="/downloads/comfyj/docs/comfyj-2.7-javadoc.zip"><img src="/images/icons/files/documentation_zip.png" alt="zip" title="Download ZIP archive" /></a> </small> </li> <li> <a href="/downloads/comfyj/javadoc/changes.html">API differences: ComfyJ 2.6 and 2.7</a> </li> </ul> </div> <div class="Col3_3"> <h4> <span class="doctypes"> <a href="/downloads/comfyj/docs/ComfyJ-Tutorial.html">Tutorial</a> <small> <a href="/downloads/comfyj/docs/ComfyJ-Tutorial.zip"><img src="/images/icons/files/documentation_zip.png" alt="zip" title="Download ZIP archive" /></a> <a href="/downloads/comfyj/docs/ComfyJ-Tutorial.pdf"><img src="/images/icons/files/documentation_pdf.png" alt="pdf" title="Download PDF document" /></a> </small> </span> </h4> <ul class="documentation small"> <li><a href="/downloads/comfyj/docs/ComfyJ-Tutorial.html#AEN20">Setting up</a></li> <li><a href="/downloads/comfyj/docs/ComfyJ-Tutorial.html#AEN66">Generating code</a></li> <li><a href="/downloads/comfyj/docs/ComfyJ-Tutorial.html#AEN83">Writing planner class</a></li> </ul> </div> </div> <br /> <div class="container"> <div class="Col3_1"> <h4><a class="external" href="http://support.teamdev.com/docs/DOC-1055">Reference Table</a></h4> <p>Mapping COM Types to ComfyJ Classes. This can be used when you work with COM within Java objects.</p> </div> <div class="Col3_2"> <h4><a class="external" href="http://support.teamdev.com/docs/DOC-1039">Installation Instructions</a></h4> <p>For installation instructions click the link above or see readme. txt file inside the ComfyJ delivery package.</p> </div> <div class="Col3_3"> <h4><a class="external" href="http://support.teamdev.com/docs/DOC-1038">Technical FAQ</a></h4> <p>Answers to commonly asked questions about getting started and working with ComfyJ.</p> </div> </div> <br /> "/></HtmlForm><script type="text/javascript"> function showNotes() { $('#releaseNotes').slideToggle('slow'); $("#releaseNotesLink").toggleClass("active"); } </script><HtmlPanelGroup id="j_id45" rendered="true" transient="false"><div class="container releaseNotes"> <h4 class="arrowed"> <a id="releaseNotesLink" href="#releaseNotes" onclick="showNotes(); return false;" class="dashed"><HtmlOutputText escape="false" id="j_id47" rendered="true" transient="false" value="ComfyJ 2.7 Release Notes"/><span/> </a> </h4> <a class="gray external_gray" href="#{propertyService.properties['server.support.url']}/blogs/tags/#{productPage.productNameLowerCase}_release">Release Notes History</a> <a name="releaseNotes"/> <div id="releaseNotes" style="display:none;"><HtmlOutputText escape="false" id="j_id49" rendered="true" transient="false" value="<p><strong>New Features and Improvements:</strong></p><ul><li class="list">Added <code>OleContainer.takeScreenshot()</code> method that allows taking a screenshot of an embedded ActiveX component</li><li class="list">Added ability to register COM components for a current user only (COM ServerManager)</li><li class="list">Added ability to get/set properties of a COM object by their DISPIDs, not only by their names (Automation)</li><li class="list">Added support of <code>IObjectSafety</code> COM interface and wrappers for it</li><li class="list">Added ability to specify a COM threading model for a Java COM server: <code>-Dteamdev.comfyj.server.threading=[DEFAULT], APARTMENTTHREADED or MULTITHREADED</code></li><li class="list">Improved stability of <code>queryInterface()</code> Java COM server method in multithreading environment</li><li class="list">Changed the signature of <code>IDataObject.getData()</code> method in order to allow fill out parameter properly</li><li class="list">Added an indication (in UI) that a Java COM server is an OLE component (COM ServerManager)</li><li class="list">Added OSGI manifest to ComfyJ library</li><li class="list">Provided the ability to get the <code>HRESULT</code> after execution of the function (Codegen)</li></ul><p></p><p><strong><span class="whatsnew">Resolved Issues:</span></strong></p><ul><li class="list">Re-parenting issue in <code>OleContainer</code> component</li><li class="list">Flickering issues in <code>OleContainer</code> component</li><li class="list">Focus handling issues in <code>OleContainer</code> component</li><li class="list">NPE in the <code>OleContainer.destroyObject()</code> method</li><li class="list">Issue in <code>IDispatchServer</code> class with dispatching methods that have <code>SafeArray</code> parameters, which contain a structure type</li><li class="list">Problem with passing null <code>BSTRs</code> values through <code>VARIANT</code> byref</li><li class="list">Corrected <code>INTERFACE_IDENTIFIER</code> constant (IID) of <code>IDataObject</code> interface</li><li class="list">Issue in the code generation for <code>WMP11</code> Type library (Codegen)</li><li class="list">Issue with not determining the presence of installed JDK 1.6 and thus "Compilation", "JAR" and "JavaDoc" options were disabled (Codegen)</li><li class="list">Problem with generation of parameters for <code>Pointer</code> to <code>Pointer</code> types, such as <code>LPWSTR*</code> (Codegen)</li><li class="list">Problem with generation of wrappers for "linked" structures(Codegen)</li><li class="list">NPE in Codegen when it tries to find tools.jar library (Codegen)</li><li class="list">Problem with starting application when there is no JDK installed on a PC (Codegen)</li><li class="list">Added using of Wnd class instead of <code>Int32</code> type in generated Java COM wrappers where it's necessary (Codegen)</li></ul><p></p><p><strong><span class="whatsnew">Documentation:</span></strong></p><ul><li class="list">Updated Programmer's Guide</li></ul>"/></div> </div></HtmlPanelGroup></div> <div id="rightContent" class="Col4_4"><script src="/js/jquery/jquery.validate.js" type="text/javascript"/> <script type="text/javascript"> var product = '#{productPage.productName}'; function fireGoogleAnalytics(productName, evaluate) { var action = evaluate ? "evaluate" : "download"; var eventStr = "/" + action + "-" + productName; pageTracker._trackPageview(eventStr); } function show(id) { var component = document.getElementById(id); component.className = 'visible'; $("#download\\:email").addClass("required email"); $("#download\\:name").addClass("required"); } function hide(id) { var component = document.getElementById(id); component.className = 'hidden'; $("#download\\:email").removeClass("required email error"); $("#download\\:name").removeClass("required error"); } function changeVisibility(id) { var component = document.getElementById('download:evaluation'); if (component.checked) { show(id); } else { hide(id); } } function emailValid() { if(isEvaluationChecked()){ return $('#download\\:email').valid(); } else { return true; } } $(document).ready(function() { document.getElementById("download:evaluation").checked = #{productPage.evaluationInfo.sendEvaluation}; document.getElementById("download:email").value = "#{productPage.evaluationInfo.email}"; document.getElementById("download:name").value = "#{productPage.evaluationInfo.name}"; $("#download").validate( { ignore :".ignore", errorPlacement : function(error, element) { // Do nothing } }); }); function isEvaluationChecked() { return document.getElementById('download:evaluation').checked; } function isFormValid() { var valid = $("#download").valid(); return valid; } function processSubmit() { if( isFormValid() ) { var component = document.getElementById('download:evaluation'); fireGoogleAnalytics(product, component.checked) } else { return false; } } </script> <div id="downloadEvaluateBox" class="BoxGrey SideBar"> <div class="container"> <h3>Download & Evaluate</h3> </div> <div class="content"> <p>#{productPage.productName}#{empty productPage.version ? '' : ' '}#{productPage.version}. See <a class="external" href="#{releaseNotesLink}">release notes</a></p><HtmlForm enctype="application/x-www-form-urlencoded" id="download" onsubmit="processSubmit();" prependId="true" rendered="true" submitted="false" transient="false"><table> <tbody><HtmlPanelGroup id="j_id54" rendered="true" transient="false"><tr> <td class="labelHolder"><HtmlOutputLabel escape="true" for="platform" id="j_id56" rendered="true" transient="false">Platform:</HtmlOutputLabel></td> <td><DropDownField autoComplete="true" buttonAlignment="right" buttonClass="donwloadDropDownButton" converter="com.teamdev.site.jsf.beans.product.ProductPageHandler$ProductConverter@18b2d86" customValueAllowed="false" disabled="false" fieldClass="dropdownFieldClass" id="product" immediate="false" listAlignment="left" listItemClass="donwloadDropDownlistItem" localValueSet="false" maxlength="-2147483648" rendered="true" required="false" size="-2147483648" styleClass="downloadInput" suggestionDelay="350" suggestionMinChars="0" suggestionMode="all" timeout="-1" transient="false" valid="true" var="item">popup<DropDownPopup id="product--popup" rendered="true" transient="false"/><DropDownItems id="j_id59" rendered="true" transient="false"/><TableColumn filterKind="searchField" id="j_id60" rendered="true" resizeable="true" transient="false"><HtmlGraphicImage id="j_id61" ismap="false" rendered="true" transient="false"/></TableColumn><TableColumn filterKind="searchField" id="j_id62" rendered="true" resizeable="true" transient="false"><HtmlOutputText escape="true" id="j_id63" rendered="true" transient="false" value=" "/></TableColumn></DropDownField></td> </tr></HtmlPanelGroup><tr> <td class="labelHolder"> </td> <td> <table cellpadding="0" cellspacing="0" class="evaluationCheckboxHolder"> <tr> <td style="padding-right: 5px;"><HtmlSelectBooleanCheckbox disabled="false" id="evaluation" immediate="false" localValueSet="false" onclick="changeVisibility('nameRow');changeVisibility('emailRow');" readonly="false" rendered="true" required="false" style="" transient="false" valid="true"/></td> <td><HtmlOutputLabel escape="true" for="evaluation" id="j_id67" rendered="true" transient="false">Get evaluation key</HtmlOutputLabel></td> </tr> </table> </td> </tr> <tr id="nameRow"> <td class="labelHolder"><HtmlOutputLabel escape="true" for="name" id="j_id70" rendered="true" transient="false">Name:</HtmlOutputLabel></td> <td><HtmlInputText disabled="false" id="name" immediate="false" localValueSet="false" maxlength="-2147483648" readonly="false" rendered="true" required="false" size="-2147483648" styleClass="downloadInput required" transient="false" valid="true"/></td> </tr> <tr id="emailRow"> <td class="labelHolder"><HtmlOutputLabel escape="true" for="email" id="j_id74" rendered="true" transient="false">Email:</HtmlOutputLabel></td> <td><HtmlInputText disabled="false" id="email" immediate="false" localValueSet="false" maxlength="-2147483648" readonly="false" rendered="true" required="false" size="-2147483648" styleClass="downloadInput required email " transient="false" valid="true"/></td> </tr> <tr> <td/> <td><HtmlCommandButton action="#{productPage.evaluate}" actionExpression="#{productPage.evaluate}" disabled="false" id="j_id78" immediate="false" readonly="false" rendered="true" transient="false" type="submit" value="Download"/></td> </tr> </tbody> </table></HtmlForm></div> </div><HtmlForm enctype="application/x-www-form-urlencoded" id="j_id81" prependId="true" rendered="true" submitted="false" transient="false"><HtmlOutputText escape="false" id="j_id82" rendered="true" transient="false" value="<div> "/><HtmlOutputText escape="false" id="j_id83" rendered="true" transient="false" value="<div class="BoxGrey" style="background:transparent; border: 0px; margin: -1em 0;"> <div class="content"> <div style="width:92px; float: left; margin-left:-10px;margin-top: 5px;"><a href="/store/comfyj/"> <img src="/images/buttons/buynow.png" alt="Buy now" border="0"/></a> </div> <div style="margin-left:89px;"> <br/> <p>Buy online in few steps<br/> Questions by <a href="mailto:sales@teamdev.com" class="gray">email</a></p> </div> </div> </div>"/><HtmlOutputText escape="false" id="j_id84" rendered="true" transient="false" value=" </div>"/></HtmlForm></div> </div> <div id="fullWidthContent" class="Col1_1 serif"><HtmlForm enctype="application/x-www-form-urlencoded" id="j_id86" prependId="true" rendered="true" submitted="false" transient="false"/></div></div> <div class="BoxGrey QuickLinks"> <div class="content container"> <div class="Col4_1"><UINamingContainer id="purchaseNavigationBlock" rendered="true" transient="false"><h4>Purchase & Licensing</h4> <ul> <li><a href="/#{productPage.productNameLowerCase}/licensing/">Licensing models</a></li> <li><a href="/store/#{productPage.productNameLowerCase}/">How to purchase #{productPage.productName}</a></li> <li><a href="/store/#{productPage.productNameLowerCase}/#discounts">Save with discounts</a></li> <!--li><a >Upgrade your product</a></li--> </ul></UINamingContainer></div> <div class="Separator4_12"/> <div class="Col4_2"><UINamingContainer id="supportNavigationBlock" rendered="true" transient="false"><h4>Support</h4> <ul> <li><a href="http://support.teamdev.com/#{productPage.productNameLowerCase}" class="external" target="_blank">Get help with #{productPage.productName}</a></li> <li><a href="http://support.teamdev.com/forms/reportForm.jsf" class="external" target="_blank">Submit your support request</a></li> </ul></UINamingContainer></div> <div class="Separator4_23"/> <div class="Col4_3"><UINamingContainer id="documentationNavigationBlock" rendered="true" transient="false"><h4>Documentation</h4> <ul> <li><a href="/#{productPage.productNameLowerCase}/features/">Features</a></li> <li><a href="#{propertyService.properties['server.download.folder']}/#{productPage.productNameLowerCase}/docs/#{productPage.productName}-PGuide.html">Programmer's Guide</a></li> <li><a href="/#{productPage.productNameLowerCase}/documentation/">FAQ and troubleshooting</a></li> <li><a href="http://support.teamdev.com/blogs/tags/#{productPage.productNameLowerCase}" class="external">Product news</a></li> </ul></UINamingContainer></div> <div class="Separator4_34"/> <div class="Col4_4"><UINamingContainer id="productsNavigationBlock" rendered="true" transient="false"><script type="text/javascript"> $(document).ready(function(){ $('.q_popuplayer').mouseout(function(){ $('.q_popuplayer').css({display: 'none'}); }); $('.productQuickLink:not(#jxfilewatcherQuickLink)').hoverIntent({ sensitivity: 3, interval: 200, over: function() { var productName = this.href.substring(0, this.href.length - 1); productName = productName.substring(productName.lastIndexOf('/') + 1); openProductPopup(productName); }, out: function() { } }); closeProductPopup(); }); function openProductPopup(productNameLowerCase) { if (productNameLowerCase == "") { return; } var productInfoSelector = "#" + productNameLowerCase + "ProductQuickLinkContent"; var productName = $(productInfoSelector + " > .productName")[0].innerHTML; var productDescription = $(productInfoSelector + " > .productDescription")[0].innerHTML; var description = '<strong><a href="/' + productNameLowerCase + '/">' + productName + '</a></strong><br/><span>' + productDescription + '</span><br/>'; if (productNameLowerCase != 'quipukit'){ description += '<a href="/' + productNameLowerCase + '/features/">Features</a>'; description += ' | '; } if (productNameLowerCase != 'jniwrapper'){ description += '<a href="/' + productNameLowerCase + '/onlinedemo/">Online Demo</a>'; } else { description += '<a href="/jniwrapper/winpack/">WinPack</a>'; } $("#productInfoDiv")[0].innerHTML = description; $("#productImgDiv")[0].innerHTML = '<img src="/images/icons/quicklinks/' + productNameLowerCase + '.png" alt="' + productName + '" align="left"/>'; var offset = $("#" + productNameLowerCase + "QuickLink").offset(); var pageOffset = $('#Page').offset(); var x = offset.left - pageOffset.left - 22; var navBlockOffset = $('.QuickLinks').offset(); var y = offset.top - navBlockOffset.top - 9; document.getElementById('productsNavigationBlock:links:productPopup').showAtXY(x, y); document.getElementById('productsNavigationBlock:links:productPopup').onmouseover = function() { q_showPopupLayer('productsNavigationBlock:links:productPopup'); }; } function closeProductPopup() { document.getElementById('productsNavigationBlock:links:productPopup').hide(); } </script> <h4>Products</h4> <div class="container"> <ul class="productsList"> <li><a id="jniwrapperQuickLink" href="/jniwrapper/" class="productQuickLink"> <img src="/images/icons/quicklinks/jniwrapper.png" alt="JNIWrapper" align="left"/>JNIWrapper</a> <div id="jniwrapperProductQuickLinkContent" style="display:none;"> <div class="productName">JNIWrapper</div> <div class="productDescription">Access to native code from Java without JNI</div> </div> </li> <li><a id="comfyjQuickLink" href="/comfyj/" class="productQuickLink"> <img src="/images/icons/quicklinks/comfyj.png" alt="ComfyJ" align="left"/>ComfyJ</a> <div id="comfyjProductQuickLinkContent" style="display:none;"> <div class="productName">ComfyJ</div> <div class="productDescription">Bi-directional Java-COM bridge</div> </div> </li> <li><a id="jxcaptureQuickLink" href="/jxcapture/" class="productQuickLink"> <img src="/images/icons/quicklinks/jxcapture.png" alt="JxCapture" align="left"/>JxCapture</a> <div id="jxcaptureProductQuickLinkContent" style="display:none;"> <div class="productName">JxCapture</div> <div class="productDescription">Screen capture API for Java apps</div> </div> </li> <li><a id="jxbrowserQuickLink" href="/jxbrowser/" class="productQuickLink"> <img src="/images/icons/quicklinks/jxbrowser.png" alt="JxBrowser" align="left"/>JxBrowser</a> <div id="jxbrowserProductQuickLinkContent" style="display:none;"> <div class="productName">JxBrowser</div> <div class="productDescription">Integration of Mozilla Firefox into Java AWT/Swing</div> </div> </li> </ul> <ul class="productsList"> <li><a id="jexplorerQuickLink" href="/jexplorer/" class="productQuickLink"> <img src="/images/icons/quicklinks/jexplorer.png" alt="JExplorer" align="left"/>JExplorer</a> <div id="jexplorerProductQuickLinkContent" style="display:none;"> <div class="productName">JExplorer</div> <div class="productDescription">Use the IE browser as a Java Swing UI component</div> </div> </li> <li><a id="jexcelQuickLink" href="/jexcel/" class="productQuickLink"> <img src="/images/icons/quicklinks/jexcel.png" alt="JExcel" align="left"/>JExcel</a> <div id="jexcelProductQuickLinkContent" style="display:none;"> <div class="productName">JExcel</div> <div class="productDescription">Provides full access to Excel functionality from Java</div> </div> </li> <li><a id="jxfilewatcherQuickLink" href="/jxfilewatcher/" class="productQuickLink"> <img src="/images/icons/quicklinks/jxfilewatcher.png" alt="JxFileWatcher" align="left"/>JxFileWatcher</a> </li> <li><a id="quipukitQuickLink" href="/quipukit/" class="productQuickLink"> <img src="/images/icons/quicklinks/quipukit.png" alt="QuipuKit" align="left"/>QuipuKit</a> <div id="quipukitProductQuickLinkContent" style="display:none;"> <div class="productName">QuipuKit</div> <div class="productDescription">JSF library for creating a dynamic UI for Web apps</div> </div> </li> </ul> </div><HtmlForm enctype="application/x-www-form-urlencoded" id="links" prependId="true" rendered="true" submitted="false" transient="false"><PopupLayer closeOnOuterClick="false" draggable="false" hidingTimeout="0" id="productPopup" modal="false" rendered="true" transient="false" visible="false"><HtmlOutputText escape="false" id="j_id96" rendered="true" transient="true" value=" <div class="productPopup"> <div> <div id="productImgDiv" class="productImgDiv"> </div> <div id="productInfoDiv" class="productInfoDiv"> </div> </div> </div>"/></PopupLayer></HtmlForm></UINamingContainer></div> </div> </div><UINamingContainer id="footerSubview" rendered="true" transient="false"><div id="Footer" class="clearfix"><HtmlForm enctype="application/x-www-form-urlencoded" id="errorReport" prependId="true" rendered="true" submitted="false" transient="false"><HtmlInputHidden id="pageId" immediate="false" localValueSet="false" rendered="true" required="false" transient="false" valid="true"/><HtmlInputHidden id="errorText" immediate="false" localValueSet="false" rendered="true" required="false" transient="false" valid="true"/><HtmlPanelGroup id="errorReportSender" rendered="true" transient="false"><ReloadComponents disableDefault="false" id="sendBugReport" immediate="false" rendered="true" requestDelay="0" submitParent="true" transient="false"/></HtmlPanelGroup></HtmlForm><div class="Col2_1"> © #{dateUtil.currentYear} #{propertyService.properties['company.name.full']} All rights reserved. <a href="/legal/">Terms of Use</a> | <a href="/privacy/">Privacy Policy</a><HtmlOutputText escape="true" id="buildNumber" rendered="true" style="color:white;" transient="false" value=" | Build: #223"/></div> <div class="Col2_2 textright"> <script> function googleSearch(value) { var queryComponent = value + " site:" + window.location.host; queryComponent = encodeURIComponent(queryComponent); var query = "http://www.google.com/search?hl=en&q=" + queryComponent; window.location = query; } </script> <form id="search" type="container" method="get" onsubmit="googleSearch(document.getElementById('search_field').value);return false;"> <a href="/company/contactus/">Contact Us</a> | <a href="/company/news/">Latest News</a> | <a href="/company/career/">Job Offers</a> | <!-- a href="/sitemap/">Site Map</a--> <input type="search" id="search_field" name="text" placeholder="Search" autosave="TeamDev" results="5"/> </form> </div> </div></UINamingContainer></div> <!-- Google Analytics --> <script type="text/javascript"> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www."); document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E")); </script> <script type="text/javascript"> var pageTracker = _gat._getTracker("UA-477095-2"); pageTracker._setDomainName("none"); pageTracker._setAllowLinker(true); pageTracker._initData(); pageTracker._trackPageview(); </script> </body> </html></dn>