PDA

View Full Version : Ext.Direct - Server-side Stacks



aconran
8 May 2009, 11:32 AM
Link to spec: http://www.sencha.com/products/extjs/extdirect/

PHP
Symfony - Maintained by dancablam (Daniel Stevens)
http://extjs.com/forum/showthread.php?t=67445
http://www.symfony-project.org/plugins/dsExtDirectPlugin

Ext.Direct PHP - Maintained by tommymaintz (Tommy Maintz)
http://extjs.com/forum/showthread.php?t=68186

Simple Router - Maintained by Ext JS Team
Within SDK - examples/direct/php/

Ext.Direct PHP Backend - Maintained by ckr
http://extjs.com/forum/showthread.php?t=68044

Ext.Direct for CodeIgniter - Maintained by goachka
http://extjs.com/forum/showthread.php?t=79211

Ext.Direct for Kohana 3 - Maintained by Bodom78
http://www.extjs.com/forum/showthread.php?100688-Ext.Direct-for-Kohana-3&p=473139#post473139

Easy Ext.Direct integration with PHP
http://www.extjs.com/forum/showthread.php?95022-Easy-Ext.Direct-integration-with-PHP

Ext.Direct CakePHP Stack - Maintained by Dumas
http://www.sencha.com/forum/showthre...ePHP-and-ExtJS
(http://www.sencha.com/forum/showthre...ePHP-and-ExtJS)
Zend Framework 2 - Maintained by Rovak
http://www.sencha.com/forum/showthread.php?243583-Sencha-Module-for-Zend-Framework-2

Ruby
Rails - Maintained by christocracy (Chris Scott)
http://extjs.com/forum/showthread.php?t=67313
http://rubyforge.org/projects/rails-extjs/

Merb - Maintained by christocracy (Chris Scott)
http://extjs.com/forum/showthread.php?t=67313
http://rubyforge.org/projects/merb-extjs/

.NET
Ext.Direct .Net Server-side stack - Maintained by evant (Evan Trimboli)
http://extjs.com/forum/showthread.php?t=68161
Ext.Direct for .Net 3.5 - Maintained by shibubh (Shibu Bhattarai)
http://extjs.com/forum/showthread.php?t=67955
ExtDirect4DotNet - Maintained by crp_spaeth
http://extjs.com/forum/showthread.php?t=68619
http://code.google.com/p/extdirect4dotnet
Ext.Direct for ASP.NET MVC - Maintained by elishnevsky
http://extjs.com/forum/showthread.php?t=72245
ExtDirectHandler for .NET - Maintained by gianmarco
http://gimmi.github.com/extdirecthandler/

ExtDirect stack based on Castle Framework (.NET) - Maintained by (aritchie)
[URL]http://www.extjs.com/forum/showthread.php?p=462898

Java
directjngine - Maintained by pagullo (Pedro Soliveres)
http://code.google.com/p/directjngine/
http://extjs.com/forum/showthread.php?t=73027

extdirectspring - Maintained by ralscha
https://github.com/ralscha/extdirectspring (http://code.google.com/p/extdirectspring/)
http://www.sencha.com/forum/showthread.php?103691-Ext.Direct-Spring-1.0.0

extdirect4java - Maintained by piziwate (Steve Guillarmod)
http://extjs.com/forum/showthread.php?t=67956
http://code.google.com/p/extdirect4java

Ext.Direct Struts 2 plugin: extdirectj-s2-plugin - Mainted by stefanorg
http://extjs.com/forum/showthread.php?t=69353
http://code.google.com/p/extdirectj-s2-plugin/

HQExtDirect - Mainted by cattus
A new reflection based Java server-side stack implementation.
Examples, additional information and packages you can find at the project's home page:
http://bitbucket.org/cattus/hqextdirect/
Forum thread: http://extjs.com/forum/showthread.php?t=70619

ColdFusion
DirectCFM - Maintained by aconran (Aaron Conran)
http://extjs.com/forum/showthread.php?t=67983
https://github.com/aconran/DirectCFM

ExtDirectCF: A Managed ColdFusion Server-side stack with security - Maintained by jimmifett
http://www.extjs.com/forum/showthread.php?t=70264

Groovy
Grails - Plugin: Ext Direct - Maintained by dferrand (Damien Ferrand)
http://grails.org/plugin/directext


Delphi
ExtDirect for Delphi - Maintained by r.federiconi
http://extjs.com/forum/showthread.php?t=71472
http://code.google.com/p/extdirectdelphi/

4th Dimension (4D) v11
4th Dimension (4D) v11 ExtRemoting component - Maintained by ahartlen
http://www.pelicaneng.ca/downloads.shtml


Perl
Perl Stack - Maintained by (scottpenrose) Scott Pennrose
http://extjs.com/forum/showthread.php?p=377723

CatalystX::ExtJS::Direct - Enable Ext.Direct in Catalyst controllers
http://search.cpan.org/~perler/CatalystX-ExtJS-Direct-2.1.4/lib/CatalystX/ExtJS/Direct.pm

RPC::ExtDirect - Full-featured and well documented Ext.Direct stack
https://metacpan.org/module/RPC::ExtDirect

Python
extdirect.django 0.2 - Maintained by (sancho_0) Santiago Videla
http://pypi.python.org/pypi/extdirect.django/

Django Stack - Maintained by (Svedrin)
http://mumble-django.org/docs/api/djextdirect.html
http://pypi.python.org/pypi/djextdirect/0.3

(http://pypi.python.org/pypi/djextdirect/0.3)Node.js
Maintained by stju (Juris Vecvanags)
https://npmjs.org/package/extdirect

SamuraiJack1
13 May 2009, 12:30 AM
What about perl stack? It is mentioned in specification, but not present here.

abraxxa
13 May 2009, 5:56 AM
+1 for a Perl stack

woomboom
13 May 2009, 2:44 PM
php Kohana stack anyone?

dlethe
13 May 2009, 4:25 PM
Why not a C (and not C++) implementation? All of your supported stacks are slow, and resource hogs. None of your supported stacks are appropriate for embedded configurations. The only compiled stack is for the proprietary MSFT operating systems.

Of course, I'm not complaining (well, only a little) ... glad to see ext.direct, but there is a whole class of potential users for it are resource sensitive and/or have proprietary operating systems for the server. This eliminates .NET, JAVA, and your other choices, except for PHP, which isn't a good choice in general for embedded developers.

Also, could you please publish full specs for the back-end? I.e, an operating system agnostic point of view or porting guide. Anybody who wishes to port to another language needs more than to just take apart the source code, especially since your source code makes calls to library functions that are built into the various back-end language stacks.

mike.slattery
13 May 2009, 5:42 PM
+1 for perl, would begin coding against it today. Also, can there be/is there a JS-based stack for possible use with apps like freeswitch and couchDB?

Thanks Ext!

evant
14 May 2009, 7:43 AM
Ext is going to provide routers for the more popular server side languages. We're finalizing the specification now so that you can build one for your own platform.

dancablam
14 May 2009, 7:53 AM
Why not a C (and not C++) implementation? All of your supported stacks are slow, and resource hogs. None of your supported stacks are appropriate for embedded configurations. The only compiled stack is for the proprietary MSFT operating systems.

The Ext team is leaving the development of most of these implementations up to the community. They can't feasibly create an Ext.Direct implementation for every imaginable platform. Also keep in mind that Ext.Direct is about 4 weeks old. More implementations are to come. If you're really in need of an implementation for your needs I recommend creating it yourself and publishing it to the community - the specs are reasonably simple.


Also, could you please publish full specs for the back-end?

Here are the Ext.Direct specs: http://extjs.com/products/extjs/direct.php

Cheers,
Dan

dlethe
14 May 2009, 10:04 AM
The specs are relatatively incomplete, and unfortunately, recursive in nature. I.e, right at the beginning, the author writes, "... some features are not required for particular languages or may lack the features required to implement the functionality".

I can certainly implement XML & JSON encoding/decoding, there are published specs. Wait, I can't implement it. The spec doesn't say basic things like which version(s) of XML do I need to be compliant with.

The whole point of a server-side stack is to be language agostic from perspective of the client. Let's say I wrote a back end in imaginary language called "D"

Does the D language require type conversion, or async method calls? The spec doen't give me a yes or no, so what is the answer? Explain in detail async method calls, Exactly what are all of the error codes . is there a limit to how long it can be? This opens up problem where clients need to have conditional logic depending on the back-end they use. Bad design. The client should only have to run a standard call to figure out best way to do something based by the response ... and all of this should be handled automatically by the framework. If server side doesn't support json, then extjs should (well, it would be nice) to convert to xml automatically and translate back to json so client browser code works.


On rather simple file transfers, what do I do about file names that may not be compatible. What if somebody uploads filename ABC.TXT, Abc.TXT, and AbC.txt into same directory? Are these three different files or one file? OS / X will let you decide at installation time case sensitivity? What if the filename is to go into directory '?*.\\//', or the filename is "..\" or there are control characters in the file or directory name. Perfectly legitimate in UNIX, windows won't be happy. What if first character is a period? Do I expose it on a directory listing in UNIX?

I know I am getting anal, but a specfication has to assume nothing, and certainly can't make assumptions about whether or not my programming language lacks certain features so I can't implement something, as the spec says.

David

dlethe
14 May 2009, 10:52 AM
I think best way to simply frame it, is that the spec is written so that the server-side language-specific defaults, libraries, and features are used as the default. From design perspective of server-side, that is good. You want to make sure that ext.direct works with all of the default library code, for all obvious reasons.

But for a new port, the spec doesn't provide enough information. The developer doesn't know what the default should be. PHP on Solaris and .NET on Windows XP have very different perspectives on everything from variable and expression parsing to file naming conventions. So what is a developer to do? I think you are going to run into some serious problems down the road unless you get very specific.

The architecture guarantees that one can have a perfectly good ExtJS app behave differently depending on the server-side backend ... especially if there are bugs in client-side code. Are plug-in authors going to have to choose what back-end they support? That is like having plug-ins only work with certain browsers .. we hate that.

A suggestion, develop a certification extjs suite that not only tests what should work, but what shouldn't work. Get the plug-in authors to work toghether on it. Each server-side engine must pass and fail each test within the certification suite exactly the same way. .i.e. test #27 tests rules that define acceptable whitespace. Test #28 examines bad whitespace, and if your server code is too tolerant, and the test passes, then you report that the server-side failed test #28 because it is just too tolerant.

This test suite will be invaluable to developer, and will be most helpful when new versions of perl, php, coldfusion, etc, come out ... because we all know about how upgrades break things, or if certain server side engines break under certain operating systems. What if server engine works with one O/S, but not another? The cert suite can be part of the bundle that the installer runs to test things as part of the startup.

Sorry for rant, I've written code for just about every O/S and CPU architecture you can imagine, from z80s to mainframes, and portability for software black-boxes is incredibly difficult to get right unless you leave nothing open to interpretation. (You must also rewrite the spec so the words SHOULD is replaced by MUST).

Look at all the mess we have right now with browser compatibility and CSS. Nip it all in the bud ... now. :)

aconran
14 May 2009, 12:33 PM
First off, thanks for the comments.



A suggestion, develop a certification extjs suite that not only tests what should work, but what shouldn't work. Get the plug-in authors to work toghether on it. Each server-side engine must pass and fail each test within the certification suite exactly the same way. .i.e. test #27 tests rules that define acceptable whitespace. Test #28 examines bad whitespace, and if your server code is too tolerant, and the test passes, then you report that the server-side failed test #28 because it is just too tolerant.

We are working on a test-suite and the 5 server-side implementations that we have been run against the rudimentary test suite and passed. We would like to provide this publicly so that other parties can run it against their server-side stacks and verify compatibility.

The test suite tests things like request batching, file upload, form posts, error handling etc. However, it will not handle things like file naming and other things which you've specified above. These are too specific to possible environments/OSs/languages and our goal here is to be platform-language agnostic.

crp_spaeth
15 May 2009, 2:34 AM
may you can add my Solution to the list as well?

http://extjs.com/forum/showthread.php?t=68619

aconran
15 May 2009, 4:42 AM
may you can add my Solution to the list as well?

http://extjs.com/forum/showthread.php?t=68619

Added!

omerio
16 May 2009, 4:31 AM
I personally use Struts 2, so the Java servlet library won't be of help to me, but there already a plugin 'JSON plugin' (http://cwiki.apache.org/S2PLUGINS/json-plugin.html) for Struts 2 that supports remoting, but is developed around the Dojo rpc. I'm trying to get in touch with the project owners to add support for Ext.Direct, failing that I'm going to start a new plugin to support Ext.Direct in Struts 2. Will keep you posted

stefanorg
18 May 2009, 2:47 AM
Hi omerio, yestarday i've started the developing of a s2 plugin for extdirect with annotation support ... if you want you can send me a pm maybe we can help each other to developing the plugin :))



I personally use Struts 2, so the Java servlet library won't be of help to me, but there already a plugin 'JSON plugin' (http://cwiki.apache.org/S2PLUGINS/json-plugin.html) for Struts 2 that supports remoting, but is developed around the Dojo rpc. I'm trying to get in touch with the project owners to add support for Ext.Direct, failing that I'm going to start a new plugin to support Ext.Direct in Struts 2. Will keep you posted

aconran
18 May 2009, 7:51 AM
Added the Groovy Grails plugin to the list.

eallik
18 May 2009, 9:19 PM
Any plans/rumours of a Python (or even a Django specific) implementation?

eallik
18 May 2009, 9:23 PM
As a partial answer to my own question, I found a stub project someone has created on Google Code - http://code.google.com/p/django-extdirect/ - but it just has the SVN directory structure and nothing more as of now.

bregard
19 May 2009, 4:48 AM
Just started work on a stack for 4th Dimension (4D). Its on Google Code:

http://code.google.com/p/4dextsss/

ahartlen
19 May 2009, 10:15 AM
Amusingly enough, I've just finished an implementation of Ext3 remoting for 4th Dimension. :) The code's not available yet, but should be in a few days.

bregard
19 May 2009, 11:22 AM
Amusingly enough, I've just finished an implementation of Ext3 remoting for 4th Dimension. :) The code's not available yet, but should be in a few days.

I guess I'm not the only one that needs this then :). I look forward to checking out your implementation.

galdaka
20 May 2009, 5:30 AM
Hi,

Added Ext.direct.Router for Lotus Domino.


Greetings,

ahartlen
1 Jun 2009, 3:37 AM
4th Dimension (4D) v11 ExtRemoting component has been released. Available for download at http://www.pelicaneng.ca/downloads.shtml

cattus
8 Jun 2009, 2:16 AM
A new reflection based Java server-side stack implementation.

Examples, additional information and packages you can find at the project's home page: http://bitbucket.org/cattus/hqextdirect/

Forum thread: http://extjs.com/forum/showthread.php?t=70619

KGeiger
1 Jul 2009, 11:01 AM
I used the Ext Direct .NET example provided in this thread and everything seems to be working in Firefox; however, when opening the project in IE for textfields are not displaying. At first, I was thinking that maybe it's a version issue for IE. It works fine sometimes in IE version 6.0.2900.2180.xpsp_sp_2_qfe.090206-1239 (I know version # is Craziness!) but it doesn't seem to work at all with version 6.0.2900.2180.xpsp_sp2_gdr.090206-1233. I was willing to except that it just doesn't work with the later version but the first version I mentioned works on some pcs and not others. Has anyone experienced this type of behavior?

evant
1 Jul 2009, 7:41 PM
The version included in the download is a pre-release version. When 3.0 final is release I'll update the zip to include that. I've never seen that behaviour on IE, I don't really see why it would affect it.

KGeiger
7 Jul 2009, 5:52 AM
Thanks evant!

jakehurst
7 Jul 2009, 1:18 PM
I'd also love to see a version in Python.

sancho_0
14 Jul 2009, 7:27 PM
Hi guys

I'm working on an implementation of Ext.Direct for Django

http://github.com/gsancho/extdirect.django/tree/master

people using Django, may want to give it a try and let me know your comments.

Best Regards

Neville Burnell
31 Jul 2009, 3:58 PM
Ext is going to provide routers for the more popular server side languages. We're finalizing the specification now so that you can build one for your own platform.

A router for Rack would cover most Ruby Frameworks

scottpenrose
23 Aug 2009, 3:00 PM
Hey guys

I have built a perl Ext.Direct server stack. It is not as complete as many of the other implementations, but it is already full functional. Specific details can be found here:

http://extjs.com/forum/showthread.php?p=377723

Enjoy

Scott

Sanems
24 Aug 2009, 1:43 PM
Sorry if I sound late on this but first of all, I am just beginning to get my feet wet with DWR and now weve got Ext.Driect, assuming all I care about is Java on the server side, with DWR do I still need Ext.Direct ?? Ext.Direct is great news all the same

aconran
1 Sep 2009, 1:16 AM
Added a few more Ext.Direct stacks in the first post.

sancho_0
11 Sep 2009, 6:21 PM
Hi guys,

I just released the initial public release of extdirect.django. Hope you like it.

http://pypi.python.org/pypi/extdirect.django/

Best Regards

jwitt
16 Oct 2009, 2:54 AM
I wrapped some code arround Ext.Direct PHP ( Maintained by tommymaintz) and build a Typo3 Service with additional Typo3 specific features -> jw_extjsdirect (http://typo3.org/extensions/repository/view/jw_extjsdirect/current/) To test the service, there is the extension jw_extjsdirect_demo (http://typo3.org/extensions/repository/view/jw_extjsdirect_demo/current/) in the Typo3 repository available.
Jens

erhan
27 Nov 2009, 5:59 PM
And finally server-stack for CakePHP :)

http://www.extjs.com/forum/showthread.php?t=86501

Thanks Tommy and goachka...

Gjslick
31 Dec 2009, 12:17 PM
Hey Aaron, can you add my stack for ColdFusion to the list? http://www.extjs.com/forum/showthread.php?t=87640

Thanks,

Greg

axpa
22 Jan 2010, 2:34 AM
Has anyone seen a stack for Zend Framework / PHP?I couldnt find any so I created one myself.
You can find it here:
Ext.Direct for Zend Framework:
http://www.extjs.com/forum/showthread.php?t=91019

MoShAn480
29 Jan 2010, 8:59 PM
Hi,

here is my Spring3 MVC controller based router. It allows you to use all the features of Spring including form validation as though you would in Spring MVC controller methods. The inputs are also flexible following the design of Spring.

http://code.google.com/p/springextjs

Work still in progress to improve it further.

tungchau
1 Feb 2010, 1:38 PM
Hi,

here is my Spring3 MVC controller based router. It allows you to use all the features of Spring including form validation as though you would in Spring MVC controller methods. The inputs are also flexible following the design of Spring.

http://code.google.com/p/springextjs

Work still in progress to improve it further.

Thanks for sharing the lib. I realized that json-lib you included only supports upto jdk1.5. It would be great if Java 6 is also supported.

MoShAn480
1 Feb 2010, 3:07 PM
Works with Java 1.6 as well.

tungchau
3 Feb 2010, 12:51 PM
Hi MoShAn480,
I tried to use your plugin with Spring 3, but I could not make it to work. The remoting method in my Controller got called, but the result returned is null. Do you know what I did wrong?

package com.xxx.web;

import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import com.google.code.springextjs.remoting.spring3.controller.ExtJsRemotingController;
import com.google.code.springextjs.remoting.annotations.Annotations.ExtJsRemotingMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import java.text.MessageFormat;
//@Controller
@RequestMapping(value = "/extjs/remoting")
public class MyController extends ExtJsRemotingController {
protected final Log logger = LogFactory.getLog(getClass());
@ExtJsRemotingMethod (paramLength = 2)
public int sum(int a,int b) {
return a+b;
}
@ExtJsRemotingMethod (paramLength = 2)
public String multiply(int a,int b){
return "Result : "+(a*b);
}
@ExtJsRemotingMethod (paramLength = 3)
public String echo(String string,boolean bool, int integer){
return MessageFormat.format("String {0} boolean {1} integer {2}", string, bool, integer);
}
}

===============direct.js=================================
/*
* Ext JS Library 3.0 RC1
* Copyright(c) 2006-2009, Ext JS, LLC.
* licensing@extjs.com
*
* http://extjs.com/license
*/
Ext.onReady(function(){

var remotingProvider = new Ext.direct.RemotingProvider (REMOTING_API);
Ext.Direct.addProvider(remotingProvider);
var out = new Ext.form.DisplayField({
cls: 'x-form-text',
id: 'out'
});
var text = new Ext.form.TextField({
width: 300,
emptyText: 'Echo input'
});
var call = new Ext.Button({
text: 'Echo',
handler: function(){
MyRemotingApi.echo(text.getValue(),true,26,function(result,e){
var t = e.getTransaction();
out.append(String.format('<p><b>Successful call to {0}.{1} with response:</b><xmp>{2}</xmp></p>',
t.action, t.method, Ext.encode(result)));
out.el.scrollTo('t', 100000, true);
});

// MyRemotingApi.doEcho(text.getValue(), function(result, e){
// var t = e.getTransaction();
// out.append(String.format('<p><b>Successful call to {0}.{1} with response:</b><xmp>{2}</xmp></p>',
// t.action, t.method, Ext.encode(result)));
// out.el.scrollTo('t', 100000, true);
// });
}
});
var num = new Ext.form.TextField({
width: 80,
emptyText: 'Multiply x 8',
style: 'text-align:left;'
});
var multiply = new Ext.Button({
text: 'Multiply',
handler: function(){
MyRemotingApi.multiply(num.getValue(),8, function(result, e){
var t = e.getTransaction();
if(e.status){
out.append(String.format('<p><b>Successful call to {0}.{1} with response:</b><xmp>{2}</xmp></p>',
t.action, t.method, Ext.encode(result)));
}else{
out.append(String.format('<p><b>Call to {0}.{1} failed with message:</b><xmp>{2}</xmp></p>',
t.action, t.method, e.message));
}
out.el.scrollTo('t', 100000, true);
});
}
});
text.on('specialkey', function(t, e){
if(e.getKey() == e.ENTER){
call.handler();
}
});
num.on('specialkey', function(t, e){
if(e.getKey() == e.ENTER){
multiply.handler();
}
});
var p = new Ext.Panel({
title: 'Remote Call Log',
//frame:true,
width: 600,
height: 300,
layout:'fit',

items: [out],
bbar: [text, call, '-', num, multiply]
}).render(Ext.getBody());
Ext.Direct.on('message', function(e){
out.append(String.format('<p><i>{0}</i></p>', e.data));
out.el.scrollTo('t', 100000, true);
});
});
==============index.jsp===========================
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Customer Portal</title>
<link rel="stylesheet" type="text/css" href="../ext/resources/css/ext-all.css" />
<script type="text/javascript" src="../ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="../ext/ext-all-debug.js"></script>
<script type="text/javascript">
<%= com.google.code.springextjs.remoting.util.ExtJsRemotingUtil.createExtRemotingApiString(
request.getContextPath() + "/extjs/remoting/router",
com.xxx.web.MyController.class,
"MyRemotingApi")%>
</script>
<script language="javascript" src="../javascripts/direct.js"></script>
</head>
<body style="margin:10px;">
</body>
</html>

MoShAn480
3 Feb 2010, 11:24 PM
Hi,

I added an example web app and additional dependency jars in SVN. I did find though while building the sample web app that there is a bug with handling primitive and their wrappers as return types. I will resolve this tomorrow.

MoShAn480
3 Feb 2010, 11:35 PM
Hi,

Actually I found that the multiply in your example is sending a string but you are expecting int to do the multiplication. Change the ints to Strings and parse int values, otherwise send numeric values in your remote json request. I have updated the example controller in the sample code to reflect this in SVN.

Let me know if you have more questions.

tungchau
8 Feb 2010, 2:30 PM
Hi,

Actually I found that the multiply in your example is sending a string but you are expecting int to do the multiplication. Change the ints to Strings and parse int values, otherwise send numeric values in your remote json request. I have updated the example controller in the sample code to reflect this in SVN.

Let me know if you have more questions.

Hi,
Could you please also post the code of com.google.code.springextjs.sample.RemotingController class also? I still could not make it work and I am not sure it is because of the path passed into ExtJsRemotingUtil.createExtRemotingApiString ? Is it supposed to be "/controller/extjs/remoting/router" ?

I tried all the following options, but they all did not work:
/controller/extjs/remoting/router
/extjs/remoting/router
/extjs/remoting

In the Remote Call Log, I got the following messages:
"Successful call to MyRemotingApi.echo with response: null'

"Call to MyRemotingApi.multiply failed with message: Unable to connect to the server."

Thanks,
Tung Chau

tungchau
9 Feb 2010, 9:14 AM
I wonder whether I did the annotation correctly...

==============RemotingController.java=======
package com.sample.web;
import org.springframework.web.servlet.mvc.Controller;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import java.io.IOException;
import com.google.code.springextjs.remoting.spring3.controller.ExtJsRemotingController;
import com.google.code.springextjs.remoting.annotations.Annotations.ExtJsRemotingMethod;
import org.springframework.web.bind.annotation.RequestMapping;
import java.text.MessageFormat;
@RequestMapping(value = "/controller/extjs/remoting")
public class RemotingController extends ExtJsRemotingController {
protected final Log logger = LogFactory.getLog(getClass());
@ExtJsRemotingMethod (paramLength = 1)
public String multiply(int a){
return "Result : "+(a*8);
}
@ExtJsRemotingMethod (paramLength = 1)
public String doEcho(String string){
return MessageFormat.format("String {0}", string);
}
}
============================================
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ExtJS Direct and Spring</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/ext-all-debug.js"></script>
<script type="text/javascript">
<%= com.google.code.springextjs.remoting.util.ExtJsRemotingUtil.createExtRemotingApiString(
request.getContextPath() + "/controller/extjs/remoting/router",
com.sample.web.RemotingController.class,
"TestAction")%>
</script>
<script language="javascript" src="${pageContext.request.contextPath}/javascripts/direct.js"></script>
</head>
<body style="margin:10px;">
</body>
</html>
===============direct.js==================
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ExtJS Direct and Spring</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/ext-all-debug.js"></script>
<script type="text/javascript">
<%= com.google.code.springextjs.remoting.util.ExtJsRemotingUtil.createExtRemotingApiString(
request.getContextPath() + "/controller/extjs/remoting/router",
com.sample.web.RemotingController.class,
"TestAction")%>
</script>
<script language="javascript" src="${pageContext.request.contextPath}/javascripts/direct.js"></script>
</head>
<body style="margin:10px;">
</body>
</html>
==============springapp-servlet.xml==============
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ExtJS Direct and Spring</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/ext-all-debug.js"></script>
<script type="text/javascript">
<%= com.google.code.springextjs.remoting.util.ExtJsRemotingUtil.createExtRemotingApiString(
request.getContextPath() + "/controller/extjs/remoting/router",
com.sample.web.RemotingController.class,
"TestAction")%>
</script>
<script language="javascript" src="${pageContext.request.contextPath}/javascripts/direct.js"></script>
</head>
<body style="margin:10px;">
</body>
</html>
===================web.xml===============
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>ExtJS Direct and Spring</title>
<link rel="stylesheet" type="text/css" href="${pageContext.request.contextPath}/ext/resources/css/ext-all.css" />
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="${pageContext.request.contextPath}/ext/ext-all-debug.js"></script>
<script type="text/javascript">
<%= com.google.code.springextjs.remoting.util.ExtJsRemotingUtil.createExtRemotingApiString(
request.getContextPath() + "/controller/extjs/remoting/router",
com.sample.web.RemotingController.class,
"TestAction")%>
</script>
<script language="javascript" src="${pageContext.request.contextPath}/javascripts/direct.js"></script>
</head>
<body style="margin:10px;">
</body>
</html>
=============The generated index.jsp in the browser looks correct!===========
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"><html><head> <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> <title>Customer Portal</title> <link rel="stylesheet" type="text/css" href="/ext/resources/css/ext-all.css" /> <script type="text/javascript" src="/ext/adapter/ext/ext-base.js"></script> <script type="text/javascript" src="/ext/ext-all-debug.js"></script> <script type="text/javascript"> REMOTING_API = {"actions":{"TestAction":[{"formHandler":false,"len":1,"name":"multiply"},{"formHandler":false,"len":1,"name":"doEcho"}]},"type":"remoting","url":"/controller/extjs/remoting/router"} </script> <script language="javascript" src="/javascripts/direct.js"></script></head><body style="margin:10px;"></body></html>=================================================
In the Remote Call Log, I got the following messages:

Successful call to TestAction.doEcho with response:null

Call to TestAction.multiply failed with message:Unable to connect to the server.


Please help...

tungchau
9 Feb 2010, 9:49 AM
Never mind. I found the source code of your sample using svn. Thanks.

MoShAn480
9 Feb 2010, 10:11 PM
Hi,

the example should explain things more. If you still have issues let me know. There is also a pre built sample war on the project's google code site.

tungchau
12 Feb 2010, 12:09 PM
Thanks. I imported wrong Controller class inside my RemotingController class. That explains why ...

MoShAn480
17 Feb 2010, 9:32 PM
Hi,

just put a 0.9.2-beat release up on Google Code.

check out at http://code.google.com/p/springextjs/wiki/UsingLatestSpringextjs

Thanks!

MoShAn480
20 Feb 2010, 1:15 AM
I have put a new JAR out on the Google code with more optimized and simplified API.

The updated WIKI can be found here:

http://code.google.com/p/springextjs/wiki/UsingLatestSpringextjs

j.bruni
25 Mar 2010, 3:08 AM
Hi, Aaron,

I have just published another "connector" to use Ext.Direct with PHP.

http://www.extjs.com/forum/showthread.php?t=95022

Maybe you want to include in the list.

Thanks.

aritchie
29 Apr 2010, 4:59 AM
I'd like to throw my .NET router into the mix as well

http://www.extjs.com/forum/showthread.php?97687-ExtDirect-stack-based-on-Castle-Framework-%28.NET%29&p=462898

MoShAn480
17 Jun 2010, 4:41 PM
I have released 1.0 version of my SpringExtJs project hosted at:

http://code.google.com/p/springextjs/

It is now better integrated and allows developers to write Spring MVC controller code as they normally would with form handling, validation, and localization of messaging handling done by the plugin.

j.bruni
23 Jun 2010, 11:48 AM
The title of this message is provocative and challenging, I know... but IMHO, it is true. :) It should be the official ExtJs PHP server-side stack! ;)

Try it yourself and leave a feedback on its thread:

EXTremely-Easy-Ext.Direct-integration-with-PHP (http://www.sencha.com/forum/showthread.php?102357-Extremely-Easy-Ext.Direct-integration-with-PHP)

It is a refactor / update of my previous attempt, "Easy Ext.Direct integration with PHP (http://www.sencha.com/forum/showthread.php?95022-Easy-Ext.Direct-integration-with-PHP)"

Thanks!


P.S. @aconran - Could you please update the link in the post #1 of this thread? Thanks!

jenner
15 Aug 2010, 5:35 AM
Hey there,

just released another Python integration (for repoze.bfg (http://bfg.repoze.org))

Project URL: http://github.com/jenner/repoze.bfg.extdirect

PYPI: http://pypi.python.org/pypi/repoze.bfg.extdirect/0.1 (or just `easy_install repoze.bfg.extdirect`)

Cheers

necco
17 Aug 2010, 1:47 AM
Hi!
Is it Ext.Direct included in Sencha? Could we use it with Sencha?

nightwatch
25 Aug 2010, 1:16 PM
(copied from elishnievsky's thread which wasn't the right place for this)
I don't remember if I ever posted it here, but some time ago I have implemented my own version of Ext Direct stack as a part of 'boson-mvc' project. It's an open source library so you can use it freely. My implementation is based on Castle Windsor container. The source code can be compiled under vs 2010 and I don't provide a binary version as for now. The project contains also the 'boson' view engine for generating dynamic json or xml from asp.net mvc views.
Boson mvc is used in production software so it's been tested and is mature somehow. Unfortunately the documentation is non existent so you'll have to figure out everything yourself.Anyway I hope someone will find it useful.
Address: http://code.google.com/p/boson-mvc/

meercat
15 Sep 2010, 6:19 AM
I've written a backend for the Python (v2.5) bindings for Google App Engine without using a web framework such as django or anything like that if anyone's interested. I use it for simply putting and getting objects from the Google datastore (but of course GAE also offers a blobstore, a memcache, scheduled tasks, email and messaging etc etc)

Transaction support is where it gets a bit tricky (GAE supports transactions but only for 'entity groups' so I'm seeing what I can do about that), and the code is a bit of all an all-in-one mix at the moment, but it mostly works pretty well.

If anyone would like to know more, pm me or contactable via my blog at www.schmerg.com (http://www.schmerg.com)

alexleonardme
17 Sep 2010, 8:06 AM
I agree with the guy above me

ejzhang
11 Oct 2010, 6:03 PM
Is have EXT.Direct for ASP?

Svedrin
29 Oct 2010, 4:01 AM
I've made a Django stack myself which is focused on a lightweight implementation and use, and also features a Python Client so Ext.Direct can in fact be used as a general RPC mechanism:

http://mumble-django.org/docs/api/djextdirect.html
http://pypi.python.org/pypi/djextdirect/0.3

Would you mind naming it in the first post? :)

Thanks,
Michael

aconran
29 Oct 2010, 10:09 AM
Would you mind naming it in the first post? :)


Updated, thanks for your contribution.

figaroserg1
30 Oct 2010, 6:44 AM
My friend and colleague, Falko implemented server-side stack Ext.Direct for Zope 3 (python)

http://pypi.python.org/pypi/falkolab.ext3.direct/1.0.0a

hschaefer123
24 Jan 2011, 1:50 PM
ExtDirect4SAP

I've implemented an ExtDirect Stack for a SAP AS ABAP (Application Serve ABAP).
The Application Server ABAP for example drives the SAP Enterprise Resource Planning (ERP) System or SAP Business Warehouse (BW/BI).

The Stack implements a MVC approach, that uses BSPs (similar to JSPs) for embedding Ext JS UI Components.
Two HTTP Handler implement the API generation and Routing service.
You can use ABAP Classes and public Methods for Remote Function calls.

That means with ExtDirect4SAP it is possible to call ABAP OO Classes and Methods directly from JavaScript!
The Router transparently encodes SAP DDIC (Data Dictionary Elements) to JSON and vice versa.

Using an Apache with a MOD_PROXY and MOD_REWRITE it is also possible to design the whole application with ExtDesigner,
develop the needed Business Logic with Eclipse and transparently Test/Preview App including Data Services through Apache.
UI Deployment to SAP is possible via WebDAV and using the MIME container for ExtJs Lib and UI Elements.
Using Ant and *.jsb it is possible to compile used UIs into single minified lib.js file to load less files.

If someone is interested in this Stack, you can contact me for further details.

I also implemented the ExtDirect Stack into SAP NetWeaver Enterprise Portal (AS JAVA).
Using BSP iViews it is also possible to natively embed ExtJs Components into the SAP Portal Solution.

You can contact me via http://www.uniorg.de

Best wishes,
Holger

dlethe
5 May 2011, 6:47 AM
I'm going to implement Ext.Direct 4 but want to run it all from a USB stick that has multiple O/S support (Windows + UNIX/LINUX) that doesn't require "installing" anything on the host computer.

I've got an embedded web server and can do CGI + PHP easily enough if I kick off everything from the stick, but have not started incorporating Ext.Direct yet.

I haven't dug into the PHP/Perl and other stacks, so don't know if they are going to have problems running in this environment. Any thoughts on which stack I can use that won't blow up if configured this way? (And/or any gotchas or work-arounds I'll need to deal with).

Also, for Windows, I "could" go with the .NET if I had to, by just making this a pre-requisite, but certainly would prefer a common stack like PHP to keep all the Javascript as common as possible, and just set paths for the individuals via a startup script.

Thanks

gmillerd
22 May 2011, 7:57 AM
Seems like CatalystX::ExtJS::Direct (http://search.cpan.org/perldoc?CatalystX%3A%3AExtJS%3A%3ADirect) is what made it into CPAN for perl for extjs direct specific (lots more for extjs for form creation and routing)

gianmarco
18 Jun 2011, 12:12 AM
Hi all,
i've developed another implementation of Ext Direct specification for .NET.

The project is open source, project homepage is at

http://gimmi.github.com/extdirecthandler/

with all available information and documentation. Can you please add it to the list in this thread's first post?

Can i create an "official" thread in this forum for support and help related to this implementation? (like every other implementation)?

Thanks

gianmarco
23 Jun 2011, 9:22 PM
Ping


Hi all,
i've developed another implementation of Ext Direct specification for .NET.

The project is open source, project homepage is at

http://gimmi.github.com/extdirecthandler/

with all available information and documentation. Can you please add it to the list in this thread's first post?

Can i create an "official" thread in this forum for support and help related to this implementation? (like every other implementation)?

Thanks

aconran
17 Aug 2011, 1:24 PM
Updated with all the latest server-side stacks.

nohuhu
14 Sep 2011, 7:47 AM
Aaron, you have mentioned a test suite that you used for some server side stacks. Is it available anywhere?

Regards,
Alex.

cdevienne
25 Oct 2011, 5:12 AM
Hi,

I have implemented the ExtDirect protocol for WSME, a framework-independent webservice mini-framework:

Documentation:


http://packages.python.org/WSME/

Download:


http://pypi.python.org/pypi/WSME/
http://pypi.python.org/pypi/WSME-ExtDirect/

Cheers,

Christophe

christophe.braud
14 Nov 2011, 6:01 PM
Hi

if you are using django you will interested by the project that I created:
django-easyextjs4 (http://github.com/TofPlay/django-easyextjs4)

Regards
Christophe

eoliphan
26 Nov 2011, 5:07 PM
Hi, I'm trying to find the actual documentation for the spec. Where is it located?

nohuhu
26 Nov 2011, 11:26 PM
eoliphan,

There is no current specification on Ext.Direct, unfortunately. I just took Direct examples from the latest Ext JS build and made sure my stack supports all features found in example code.

Regards,
Alex.

Dumas
2 Dec 2011, 6:55 AM
Hi!

Please add following stack:

Ext.Direct CakePHP Stack - Maintained by Dumas
www.sencha.com/forum/showthread.php?141983-Bancha-Combining-CakePHP-and-ExtJS

best regards
Roland

Sound
6 Dec 2011, 10:46 AM
I developed an ExtDirect implementation for the Perl Dancer framework:

https://metacpan.org/module/Dancer::Plugin::ExtDirect

cdevienne
23 Apr 2012, 1:28 PM
Hi,

I would like WSME-ExtDirect (http://pypi.python.org/pypi/WSME-ExtDirect/), a python implementation of the ExtDirect protocol, to be added to the list.

Thanks !

Christophe

dileeph
1 May 2012, 10:03 AM
I looked through some of the projects listed in page 1 and a lot of the ones I looked through seem to have no activity off late. How many of those are being updated for Ext 4.1.
This includes much of PHP, Ruby and Java stacks. In Java I found only "ralscha's" extdirect-spring upto date. So is Sencha serious about the whole Ext Direct scheme of things?

If I buy a license, will I get an officially supported Ext Direct stack?

pagullo
14 May 2012, 1:54 AM
I looked through some of the projects listed in page 1 and a lot of the ones I looked through seem to have no activity off late. How many of those are being updated for Ext 4.1.
This includes much of PHP, Ruby and Java stacks. In Java I found only "ralscha's" extdirect-spring upto date. So is Sencha serious about the whole Ext Direct scheme of things?

If I buy a license, will I get an officially supported Ext Direct stack?

DJN 2.0 alpha 1 is *extremely* robust and lots of people is using it daily (I do), and it passes 117 automated test now.

Frankly, it is not published as 2.0 final because I feel bad about the documentation not being up to date, due mostly to Sencha changes to ExtJs.

By this I mean little things such as store's baseParams not working anymore (use store.proxy.extraParams for that), form submit as I did it for my ExtJs 3.x tests not working anymore, or the type of error reported by form submits when there is an unexpected app error being changed from 4.0.x to 4.1 (failureType was "exception", in 4.1 it is "connect").

Doc is 47 pages long and includes several examples, so I need to spend a pair of deadly boring mornings to reread it all and adapt all code for ExtJs 4.1, if needed.

I know, I'm way toooo picky :)

Rest assured that the public version of DJN 2.0 works as well with ExtJs 4.1 as DJN 1.x worked with ExtJs 3.x.

nohuhu
20 Jun 2012, 8:53 PM
I have tested my Perl stack with Ext JS 4.1: http://www.sencha.com/forum/showthread.php?149280-New-Ext.Direct-stack-for-Perl

Regards,
Alex.

Dumas
25 Jun 2012, 12:09 PM
Hello!


Can you please add following stack:


Ext.Direct CakePHP Stack - Maintained by Dumas
http://www.sencha.com/forum/showthre...ePHP-and-ExtJS


thanks,
Roland

alkrajo
15 Jul 2012, 10:22 AM
I wonder if it is possible to use Ext Direct from the client side to call a java applicacion running in a remote machine DirecJNgine, not servlet, but a normal java application running and listen at defined port.

WBX
27 Jul 2012, 7:10 PM
Aaron,

Could you edit the original post containing the list of stacks, replacing http://code.google.com/p/extdirectspring/ with the new location https://github.com/ralscha/extdirectspring for extdirectspring?

Thanks

lukassulaiman82
12 Sep 2012, 12:53 PM
Sample Report Ext Js Can Be Integrated IReport ???

Rovak
11 Oct 2012, 1:04 AM
I would like to add the Zend Framework 2 version -> http://www.sencha.com/forum/showthread.php?243583-Sencha-Module-for-Zend-Framework-2

iphonewhit
1 Feb 2013, 10:55 AM
Good day!

I am wondering if there is an 'official' node.js or expressjs backend for Ext.Direct? I found a couple example implementations, but they are circa 2010 and nothing that is actively maintained. (At least not enough to make the list of server backends)

I figured with the rising popularity of nodejs over the past couple years, that there would be something in this thread.

siebe vos
8 Feb 2013, 2:21 AM
+ 1 for node.js

dbeb
8 Mar 2013, 12:47 PM
Anyway of using Ext.direct with NodeJS?

iphonewhit
10 Apr 2013, 9:01 AM
Good afternoon!

Since there seems to be a little more interest in using NodeJS as a backend technology, I wrote up a quick example implementation and blog article using Ext Direct with NodeJS, ExpressJS and SequelizeJS.

Article can be found at:
http://bannockburn.io/2013/04/sencha-extjs-ext-direct-with-nodejs-and-expressjs/

Source can be found at:
https://github.com/whito/node_ext_direct

Hope this helps anyone looking for a little inspiration using Ext Direct with node!

Shameless plug: I am currently available for projects. http://www.senchadevs.com/developers/bannockburn-io

W (http://www.senchadevs.com/developers/bannockburn-io)hit Thiele

Rovak
25 May 2013, 3:24 AM
I would like to add a Scala implementation http://www.sencha.com/forum/showthread.php?264454-Scalext-Ext-Direct-Implementation-in-Scala

lmeyer1
15 Oct 2013, 6:53 AM
Hello, I looked at the three solutions that don't use a framework:

Ext.Direct PHP - Maintained by tommymaintz (Tommy Maintz)
Ext.Direct PHP Backend - Maintained by ckr
Easy Ext.Direct integration with PHP
All three have the same shortcoming: they are not usable as a Ext.data.proxy.Direct backend, because the do not implement even simple CRUD operations on a table. Something more complete like paging, total, sorting is completely absent.

Is this list here complete ? If so I think I have to develop my own backend (:| :(

aconran
15 Oct 2013, 6:57 AM
Hello, I looked at the three solutions that don't use a framework:

Ext.Direct PHP - Maintained by tommymaintz (Tommy Maintz)
Ext.Direct PHP Backend - Maintained by ckr
Easy Ext.Direct integration with PHP
All three have the same shortcoming: they are not usable as a Ext.data.proxy.Direct backend, because the do not implement even simple CRUD operations on a table. Something more complete like paging, total, sorting is completely absent.

Is this list here complete ? If so I think I have to develop my own backend (:| :(

These frameworks enable you to expose your methods. They aren't an ORM and don't aim to be. You will have to write your own CRUD operations and then expose the methods via Ext.Direct.

Dumas
15 Oct 2013, 8:14 AM
The point why there are Ext.Direct solutions which are integrated is to provide exactly these features, like on ORM and default CRUD methods.

gelliott
28 Nov 2013, 7:01 PM
Hi,

I have been playing around with this Ext.Direct implementation using SA3. In SA3 only one Direct Resource can be created and if I understand correctly I point the URL in the direct resource to the ashx created in the dotnet project. And doing this works as expected in SA3.

But does this mean that in a very large project I would need to create all the methods in a single ashx?

Thanks

Graeme