I know it is possible to instantiate a Java class from ColdFusion, but is it possible to instantiate a ColdFusion CFC from Java code?
For instance (in Java):
ColdFusionCFC obj = new ColdFusionCFC("filename.cfc");
I am wondering if it is possible to gradually transition away from an existing ColdFusion codebase to some other JVM-based language without needing to rewrite everything right away.
Calling ColdFusion CFCs from Java is a feature of ColdFusion 10. If you're not using CF10, you can call CFCs with remote functions as an HTTP web service.
Adobe's Ben Forta has some documentation on CFCProxy you might find useful, at:
http://www.forta.com/misc/cfcproxy.htm
I also once blogged about using the CFCProxy in a CF cluster here, referring to ColdFusion 8 at the time:
http://www.talkingtree.com/blog/index.cfm/2008/2/6/Using-the-CFC-Proxy-in-a-ColdFusion-Cluster
Related
It seems that most of the new kids on the block are using RESTful web services rather than SOAP. I've only dabbled in them enough to know the basics of how they work.
Essentially in a SOAP implimentation, you are able to use a WSDL file that describes data types as well as usable RPC's. Finding a WSDL file and simply adding it as a service reference in visual studio is awesome and easy to impliment.
In a REST web service you have one (or more, depending on overrides) method for each action you are wanting to take (GET, POST, PUT, DELETE). While I can see how this would be beneficial, I can see problems with this... such as still having to deserialize into a local object.
So my question is... can you actually get intellisense when consuming REST web services? When you add a service reference to a WSDL you are able to see the list of usable methods. Otherwise, is the only way to actually see the usable methods through documentation? Is there any "self-containing" document that describes to VS what you can use and/or how to interpret data types without having to deserialize/serialize.
I plan to start developing web-service client using Delphi XE. It looks like creating web-service client on delphi is easy to do.
Is there any bugs or problems when creating WebService on Delphi XE?
Is there any problems with other versions of Delphi (not XE) ?
(To create web-service i plan using WSDL-importer dialog)
Please, place Delphi version, you used to create web-service in answer.
I have created several webservice-clients in Delphi, all by using the wsdl. I have not encountered any problems so far. I have encountered some small problems, but nothin that couldn't be resolved with Google or Stackoverflow :-)
It depends. To answer your last question first, later versions of Delphi are better at generating a Web service client than earlier versions.
As for your first question. I have also created a number of Web service clients (and servers) using various versions of Delphi (most recently, Delphi 2007 and Delphi XE, though I also used Delphi 6, Delphi 7, and Delphi 2005). When the Web service methods use simple data types in its method parameters and return values (strings and integers), Delphi often does a good job of generating the client code using the WSDL importer. When complex data types are involved (objects, for example), it might be more challanging. For example, if the Web service uses complex types, and the WSDL is the only source of information about those types (you did not create the Web service, there is no documentation, or you cannot get the source code to it), it might take more work. It really depends on how complex the complex type is.
Additionally, if the Web service employs additional features such as authentication or other specialized headers, you will have to manually modify the code created by the WSDL importer. However, as birger noted, most of these issues can be resolved with research.
On the other hand, if the Web service was created in Delphi, it is usually very easy to create the Web service client.
I am new to ColdFusion and ColdBox (and programming). I tried to setup ColdBox but some of the links in the sample applications are broken.
My configuration is a GlassFish v3 installation with the current Railo OSS. I access my site through Apache 2.2.14.
So instead of http://127.0.0.1:8080/railo/ I access my environment trough http://railo/.
In Railo I have a webroot mapping / to C:/webapps/myproject/.
I have copied the current ColdBox 3M4 to C:/webapps/myproject/coldbox. I can access the dashboard through http://railo/coldbox/dashboard/index.cfm and have access to all options.
My problems start the moment I try to open the sample gallery:
HTTP Status 500 -
type Exception report
message
description The server encountered an internal error () that prevented
it from fulfilling this request.
exception
java.io.FileNotFoundException: C:\webapps\viss-dev\coldbox\samples
(Zugriff verweigert)
note The full stack traces of the exception and its root causes are
available in the GlassFish v3 logs.
GlassFish v3
OK, no problem, just enter the link directly: http://railo/coldbox/samples/index.cfm.
The site looks plain, who cares - BUT all local links look like this: http://127.0.0.1:8080/coldbox/samples/applications/helloworld/index.cfm (railo is replaced with 127.0.0.1:8080).
Looks like trouble. To make my confusion perfect: when I try to access the login app: http://railo/coldbox/samples/applications/sampleloginapp/index.cfm and hit the submit button, I am redirected to this address: http://railo/railo/coldbox/samples/applications/sampleloginapp/index.cfm.
I believe that this is not really ColdBox-related, but it manifests itself when I try to use ColdBox, so here I am.
P.S.: amazon.de takes too long to ship the ColdBox book :(
Here's a suggestion, The good people at Vivotech have developed a couple of different installers for both Windows/IIS7 and various flavours of Linux for both Railo and Open BlueDragon. The setup installs Tomcat, Railo/Open Blue Dragon and the necessary connectors to the web server. Here's the link: http://www.viviotech.net/company/installers.cfm
I think you'll find using the installers to be a lot easier than working through it yourself. If you want to go that route, Adobe and various bloggers have instructions on how to do it. Matt Woodward has a very good blog posting on it: see MattWoodward.com, He also has a presentation on this, you can see it here.
hth,
larry
Since you are new to ColdFusion (and programming in general), I would recommend developing against Adobe ColdFusion. The Developer Edition of ColdFusion is free and available from Adobe.com. You won't need to mess around or configure GlassFish since Adobe ColdFusion comes with a baked-in pre-configured Tomcat, providing both servlet engine and web server.
Just install the 'Stand-alone' version of ColdFusion Developer Edition, copy the ColdBox files into the webroot and in less than 15 minutes you be up and running.
You should also check out ColdFusion Builder which is currently available in beta from http://labs.adobe.com. It has full language support and integrated help content for learning the ins-outs of the language.
As far as the ColdBox book goes, it's available as an eBook if you really can't wait. ;-)
DISCLAIMER: I spend about 50% of my waking life devoted to making ColdFusion better as the CF Product Manager at Adobe. :-)
i have given up on glassfish and i am now struggling with tomcat :D
We're looking at developing a Web Service to function as a basis for a browser display/gui for a networked security prototype written in C++. My experience with web services has been limited to Java. I prefer Web Services in Java because it's on the "beaten path".
One sure was to do this would be to simply code a Java client which invokes the web service, and call it as a command line with parameters from the C++ code.
It's not ideal, since generally speaking an API is preferable, but in this case it would work and be a pretty safe solution.
A resource which does handles web service development in C++ is called gSOAP, at this url: http://gsoap2.sourceforge.net
Any thought on which is a better approach? Has anyone used gSOAP, and if so, what did you think?
I'd done things with gSOAP, it's not awful. I'm increasingly opposed to the RPC model for web services, though; it forces you into a lot of connection and session state that adds complexity. A REST interface is simpler and more robust.
To me is Axis C++.
For RPC style, have a look at Thrift,
I found it quite better ( faster, clearer, a lot of languages implementations) than soap.
My colleague ended up using a combination of Axis2 / java (for the service) and gsoap for the client. He created the wsdl from the Java service by generating it from a C++ header (using c2wsdl (?) or something like that. He said it was better than using a Java interface because that generated two sets of wsdl, for seperate versions of soap.
Then he used wsdl2java to generate the webservice and a test web client. Once we got that working, he used gsoap to create the web client (in C++), and it worked fine.
thanks for all the answers! I ended using a combination of them.
I had very good experience with gsoap - very simple, performance is good.
If it is acceptable to run only on Windows, there is a brand-new API for that purpose: WWSAPI
Instead of calling the java client from the command line, you can create a java virtual machine inside your C app, instantiate the class and call any methods. This is what the java.exe app does and I think the source code is included in the jdk.
Depends on how low level you want to go. You might checkout yield.
We are trying to consume web services with ColdFusion.
I am able to interact with the web service for the most part, however, there is one service where ColdFusion is throwing a "Parameters Could Not Be Found" error because the response message in the WSDL for this particular service is a blank parent class. I need to add the specific parameters of corresponding subclass that inherits the class pointed to in the service of the WSDL.
Is there a way to tell ColdFusion to use a certain class definition for the parameters?
Or, is there a ColdFusion tool for showing the acceptable parameter formats for a given WSDL?
EDIT
Or, is there a way to hook into the ColdFusion code that does the parsing/conversion of the parameter structure from the WSDL?
My guess is that even finding a third-party tool will not help much because I need to know what ColdFusion is going to do, not what the data SHOULD be; I know what it should be.
You can use your own WSDL file, you don't have to use the one generated by ColdFusion, just generate one, customize it and point people to your custom WSDL file instead of the YourComponent.cfc?WSDL url.
This article on consuming complex web services may help:
http://tjordahl.blogspot.com/2008/04/reprint-consuming-web-service-complex.html
Also note that if you have a copy of Dreamweaver laying around, it has a tool for inspecting WSDL and generating the required ColdFusion code.
Or, is there a ColdFusion tool for showing the acceptable parameter formats for a given wsdl?
Please see this SO question and answer
Maybe my code samples can help you.