Giter Club home page Giter Club logo

extension-flex's Introduction

Lucee Lucee

Lucee Server

Lucee Server (or simply Lucee) is a dynamic, Java based, tag and scripting language used for rapid web application development.

Lucee simplifies technologies like webservices (REST, SOAP, HTTP), ORM (Hibernate), searching (Lucene), datasources (MSSQL, Oracle, MySQL and others), caching (infinispan, ehcache, and memcached) and many more.

Lucee provides a compatibility layer for Adobe ColdFusion © CFML using less resources and delivering better performance.

What is new with Lucee 6

CFCAMP 2024 - Meet the Lucee team!

Meet the Lucee Team at CFCAMP 2024

Installation

You can build Lucee from source or grab one of our distributions:

Alternatively try the super-useful CommandBox standalone developer tools for CFML powered by Lucee.

Building Lucee from Source

You can find detailed instructions on how to build Lucee from source.

Lucee has a lot of testcases, there are a number of handy build flags which can be used to avoid running the entire Lucee test suite (which takes a while) when you are working on a specific feature (Lucee 6.+ only).

Lucee uses TestBox as our test framework, we have a customised CFML wrapper around TestBox which can be found in the root directory under /test.

The test suites use a range of Test Services, like s3, database, ftp, etc. You can see how they are configured in _setupTestServices.cfc via the source code.

Getting Help

If you are looking for commercial support, you might try one of the LAS Members.

System Requirements

Lucee is a JVM language running as a servlet on just about any servlet container; including Apache Tomcat, Eclipse Jetty, JBoss AS, and GlassFish.

We standardise on Apache Tomcat for installers and Docker containers as there is only so much time in the day.

Philosophy

The Lucee team “treats slowness as a bug". Many performance tests have shown Lucee to perform faster than other CFML engines.

Lucee attempts to resolve many inconsistencies found in traditional CFML; either forcing changes in language behavior, or providing configurable options in the Lucee Administrator.

For more peruse the Lucee Manifesto.

The Lucee team is always open to feedback and active at CFML community events, and is keen to remind people that Lucee is a community project.

GitHub 5.3 Java CI 5.4 Java CI 6.0 Java CI Backers on Open Collective Sponsors on Open Collective

Maven Central GitHub pull requests GitHub closed pull requests

docker pulls Open Collective backers and sponsors GitHub contributors

Website

Contributors

This project exists thanks to all the people who contribute. [Contribute].

Backers

Thank you to all our backers! 🙏 [Become a backer]

Sponsors

Support this project by becoming a sponsor. Your logo will show up here with a link to your website. [Become a sponsor]

Copyright / License

Copyright 2006-2014 Various contributing authors Copyright 2015-2021 Lucee Association Switzerland

The Lucee code base was forked from the Railo Server Project (Version 4.2) in January 2015. The Lucee Association Switzerland (LAS) is the legal custodian of the code base, and contributors are required accept the LAS Contributor License Agreement (CLA).

Lucee Server is licensed under the Lesser GNU General Public License Version 2.1 (or later); you may not use this work except in compliance with the License. You may obtain a copy of the License in the LICENSE file, or at: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.txt

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Lucee logo and related marks belong to Lucee Association Switzerland.

extension-flex's People

Contributors

isapir avatar michaeloffner avatar micstriit avatar patmoody avatar

Stargazers

 avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

patmoody byron70

extension-flex's Issues

Flash Remoting CFC parameters are case-sensitive

Receive the following exception, but changing the CFC parameter to CustNumber as it is passed in the message results in a successful call.

This is some additional debugging I have in my compiled version to inspect the message payload

raw params
[ASObject(1995395245){CustNumber=12176}]
Object to CFMLObject
ASObject to CFMLObject
Map to CFMLObject
entry
CustNumber=12176
Object to CFMLObject
{CustNumber={12176}}map
"Severity","ThreadID","Date","Time","Application","Message"
"ERROR","ajp-nio-8009-exec-2","07/10/2018","10:18:42","",";The parameter custNumber to function populateTree is required but was not passed in.;lucee.runtime.exp.ExpressionException: The parameter custNumber to function populateTree is required but was not passed in.
	at lucee.runtime.type.UDFImpl.defineArguments(UDFImpl.java:174)
	at lucee.runtime.type.UDFImpl._call(UDFImpl.java:355)
	at lucee.runtime.type.UDFImpl.callWithNamedValues(UDFImpl.java:212)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:653)
	at lucee.runtime.ComponentImpl._call(ComponentImpl.java:575)
	at lucee.runtime.ComponentImpl.callWithNamedValues(ComponentImpl.java:2013)
	at lucee.runtime.ComponentSpecificAccess.callWithNamedValues(ComponentSpecificAccess.java:155)
	at lucee.runtime.ComponentPageImpl.callWDDX(ComponentPageImpl.java:698)
	at lucee.runtime.ComponentPageImpl.call(ComponentPageImpl.java:210)
	at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:901)
	at lucee.runtime.PageContextImpl._doInclude(PageContextImpl.java:823)
	at lucee.runtime.listener.ClassicAppListener._onRequest(ClassicAppListener.java:64)
	at lucee.runtime.listener.MixedAppListener.onRequest(MixedAppListener.java:45)
	at lucee.runtime.PageContextImpl.execute(PageContextImpl.java:2464)
	at lucee.runtime.PageContextImpl._execute(PageContextImpl.java:2454)
	at lucee.runtime.PageContextImpl.executeCFML(PageContextImpl.java:2427)
	at org.lucee.extension.net.flex.CFMLProxy.invokeBody(CFMLProxy.java:129)
	at org.lucee.extension.net.flex.BlazeDS.invoke(BlazeDS.java:49)
	at org.lucee.extension.net.flex.LuceeAdapter.invoke(LuceeAdapter.java:90)
	at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
	at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1529)
	at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:907)
	at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
	at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
	at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
	at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
	at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:147)
	at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
	at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
	at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
	at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:240)
	at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:207)
	at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:212)
	at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:106)
	at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
	at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:141)
	at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:79)
	at org.apache.catalina.valves.AbstractAccessLogValve.invoke(AbstractAccessLogValve.java:616)
	at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:88)
	at org.apache.catalina.valves.RemoteIpValve.invoke(RemoteIpValve.java:676)
	at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:528)
	at org.apache.coyote.ajp.AbstractAjpProcessor.process(AbstractAjpProcessor.java:873)
	at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:670)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1520)
	at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1476)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
	at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
	at java.lang.Thread.run(Unknown Source)
"

Flash Services Gateway not passing message through to CFC

Originally posted this issue to the cfml.slack.com Lucee channel. I have not done much Java work, but managed to put a couple of fixes in place on my fork.

java.lang.NullPointerException
        at org.lucee.extension.net.flex.CFMLProxy.invokeBody(CFMLProxy.java:92)
        at org.lucee.extension.net.flex.BlazeDS.invoke(BlazeDS.java:49)
        at org.lucee.extension.net.flex.LuceeAdapter.invoke(LuceeAdapter.java:89)
        at flex.messaging.services.RemotingService.serviceMessage(RemotingService.java:183)
        at flex.messaging.MessageBroker.routeMessageToService(MessageBroker.java:1529)
        at flex.messaging.endpoints.AbstractEndpoint.serviceMessage(AbstractEndpoint.java:907)
        at flex.messaging.endpoints.amf.MessageBrokerFilter.invoke(MessageBrokerFilter.java:121)
        at flex.messaging.endpoints.amf.LegacyFilter.invoke(LegacyFilter.java:158)
        at flex.messaging.endpoints.amf.SessionFilter.invoke(SessionFilter.java:44)
        at flex.messaging.endpoints.amf.BatchProcessFilter.invoke(BatchProcessFilter.java:67)
        at flex.messaging.endpoints.amf.SerializationFilter.invoke(SerializationFilter.java:147)
        at flex.messaging.endpoints.BaseHTTPEndpoint.service(BaseHTTPEndpoint.java:278)
        at flex.messaging.MessageBrokerServlet.service(MessageBrokerServlet.java:322)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:292)

Fix 1 - Remoting Message does not pass along the destination CFC properly, so the above exception occurs as serviceName is null on this line.

My fix is here.

Fix 2 - The above got me to the point where the CFC would be instantiated, but Lucee was then throwing an exception due to the types of parameters being created from the remoting message payload, list of structures, as opposed to a single numeric argument the CFC was expecting. This commit/fix has more comments regarding this issue.

Here's a gist with my remoting configs. https://gist.github.com/byron70/5582cb5149ab91d7156fdf2f4b7bd05a

remoting-config.xml requires every CFC called to be a destination.

Not really a show stopper, but something the documentation does not reflect is the need to set a destination id equal to the full pathway to your CFC. Otherwise an exception is thrown.

See id="ColdFusion" here.

The configuration below works. It would be nice if "ColdFusion" acted as a wildcard. At the least it should be documented to change the destination id.

<?xml version="1.0" encoding="UTF-8"?>
<service id="remoting-service"
    class="flex.messaging.services.RemotingService">
    <adapters>
        <adapter-definition id="cf-object" class="org.lucee.extension.net.flex.LuceeAdapter" default="true"/>
        <adapter-definition id="java-object" class="flex.messaging.services.remoting.adapters.JavaAdapter"/>
    </adapters>

    <default-channels>
        <channel ref="my-cfamf"/>
        <channel ref="classic-cfamf"/>
    </default-channels>

    <destination id="vs.admin.flash_dev.visualservercfc">
        <properties>
            <source>*</source>
            <!-- define the resolution rules and access level of the cfc being invoked -->
            <access>
                <!-- Use the ColdFusion mappings to find CFCs, by default only CFC files under your webroot can be found. -->
                <use-mappings>true</use-mappings>
                <!-- allow "public and remote" or just "remote" methods to be invoked -->
                <method-access-level>remote</method-access-level>
            </access>

            <property-case>
                <!-- cfc property names -->
                <force-cfc-lowercase>true</force-cfc-lowercase>
                <!-- Query column names -->
                <force-query-lowercase>true</force-query-lowercase>
                <!-- struct keys -->
                <force-struct-lowercase>true</force-struct-lowercase>
            </property-case>
        </properties>
    </destination>
</service>

Servlet Unavailable Exception

I get the following on startup

30-Mar-2017 11:41:26.595 INFO [main] org.apache.catalina.core.AprLifecycleListener.lifecycleEvent The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\lucee\tomcat\bin;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files\ESET\ESET File Security\;;.
30-Mar-2017 11:41:26.845 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["http-nio-80"]
30-Mar-2017 11:41:27.063 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
30-Mar-2017 11:41:27.063 INFO [main] org.apache.coyote.AbstractProtocol.init Initializing ProtocolHandler ["ajp-nio-8009"]
30-Mar-2017 11:41:27.063 INFO [main] org.apache.tomcat.util.net.NioSelectorPool.getSharedSelector Using a shared selector for servlet write/read
30-Mar-2017 11:41:27.063 INFO [main] org.apache.catalina.startup.Catalina.load Initialization processed in 1014 ms
30-Mar-2017 11:41:27.079 INFO [main] org.apache.catalina.core.StandardService.startInternal Starting service Catalina
30-Mar-2017 11:41:27.079 INFO [main] org.apache.catalina.core.StandardEngine.startInternal Starting Servlet Engine: Apache Tomcat/8.5.11
30-Mar-2017 11:41:27.110 INFO [127.0.0.1-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deploying web application directory C:\lucee\tomcat\webapps\ROOT
30-Mar-2017 11:41:29.185 INFO [127.0.0.1-startStop-1] org.apache.jasper.servlet.TldScanner.scanJars At least one JAR was scanned for TLDs yet contained no TLDs. Enable debug logging for this logger for a complete list of JARs that were scanned but no TLDs were found in them. Skipping unneeded JARs during scanning can improve startup time and JSP compilation time.
30-Mar-2017 11:41:37.718 INFO [127.0.0.1-startStop-1] org.apache.catalina.core.ApplicationContext.log Marking servlet MessageBrokerServlet as unavailable
30-Mar-2017 11:41:37.718 SEVERE [127.0.0.1-startStop-1] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [MessageBrokerServlet] in web application [] threw load() exception
 javax.servlet.UnavailableException: ???11151???
	at flex.messaging.MessageBrokerServlet.init(MessageBrokerServlet.java:167)
	at org.apache.catalina.core.StandardWrapper.initServlet(StandardWrapper.java:1183)
	at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
	at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:989)
	at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4913)
	at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5223)
	at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
	at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:752)
	at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:728)
	at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:734)
	at org.apache.catalina.startup.HostConfig.deployDirectory(HostConfig.java:1107)
	at org.apache.catalina.startup.HostConfig$DeployDirectory.run(HostConfig.java:1841)
	at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)

30-Mar-2017 11:41:37.718 INFO [127.0.0.1-startStop-1] org.apache.catalina.startup.HostConfig.deployDirectory Deployment of web application directory C:\lucee\tomcat\webapps\ROOT has finished in 10,608 ms
30-Mar-2017 11:41:37.734 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [http-nio-80]
30-Mar-2017 11:41:37.750 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler [ajp-nio-8009]
30-Mar-2017 11:41:37.750 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 10678 ms

Cannot install extension

After compiling, when trying to install flex-extension-0.0.0.21.lex file, i get the following error in lucee server administrator

Unresolved constraint in bundle flex.extension [76]: Unable to resolve 76.0: missing requirement [76.0] osgi.wiring.bundle; (&(osgi.wiring.bundle=openamf.astranslator)(bundle-version>=1.5.8.0001L)) [caused by: Unable to resolve 82.0: missing requirement [82.0] osgi.wiring.package; (osgi.wiring.package=org.apache.commons.collections)] Lucee was not able to download the following bundles [openamf.astranslator:1.5.8.0001L;openamf:1.5.8.0002L;]

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.