Deploying Oracle ADF Essentials Applications to Glassfish

With the new Oracle ADF Essentials offering you can now deploy applications that leverage Oracle ADF on the open source Glassfish 3.1 server.

Deployment is documented in the official JDeveloper and ADF documentation (here) but below is a summary of the steps and a video of the steps you'll need to take to get a basic Oracle ADF Essentials application to work on GlassFish.

Note - to make starting/stopping GlassFish easier for my demo I used my GlassFish extension that you can get here.

First we'll install some ADF Runtime libraries on GlassFish

  1. Download and install Glassfish (Note - if you also have an Oracle DB on the same machine, you'll want to switch GlassFish's HTTP port to something else instead of 8080).
  2. Download the Oracle ADF Essentials packaging - this will get you an adf-essentials.zip file.
  3. Copy the adf_essentials.zip to the lib directory of your Glassfish domain - on a default windows install this would be: C:\glassfish3\glassfish\domains\domain1\lib
  4. Go the the above lib directory and issue a unzip -j adf_essentials.zip

This will extract the ADF libraries to the directory. Now you can start the Glassfish server.

Now let's configure Glassfish to handle applications of the ADF type:

  1. Invoke the admin console of glassfish (http://localhost:4848) and log into your admin account.
  2. Go to Configurations->Server-config->JVM Settings and choose the JVM Options tab
  3. Add the following entries:
    • -XX:MaxPermSize=512m (note this entry should already exist so just make sure it has a big enough value)
    • -Doracle.mds.cache=simple

While we are in the admin console, we can also define JDBC connections that will be used by our application.

  1. Go into Resources->JDBC->JDBC Connection Pools and click to create a New one
  2. Give it a name and choose the resource type to be javax.sql.XADataSource and choose Oracle as the Database Driver vendor. Click Next
  3. Scroll down to the Additional Properties section and start filling in the information for your database. The values for an Oracle XE will be (user=hr, databaseName = XE, Password=hr, ServerName=localhost, DriverType=thin, PortNumber=1521)
  4. Click Finish
  5. Click Ping to check your connection works.
  6. Now define a new JDBC Resource that will use the pool you just defined. In my example I called the resource jdbc/HRDS

You will need this name to match the name in your Application Module connection configuraiton.

Now you can re-start the Glassfish server for the changes to take effect.
  1. Get an ADF application going (you can use the regular Fusion Application template for this)
  2. Go into the project properties of your viewController project, under the deployment section click to edit the deployment profile that is defined there.
  3. Go to Platform and choose Glassfish 3.1 from the drop down list. Click ok to go back to your project.
  4. Go to Application -> Application Properties-> Deployment
  5. Go to Platform and choose Glassfish 3.1 from the drop down list. Click ok to go back to your project.
  6. This step will make sure that JDeveloper will autoamtically add the necessary ADF libraries to the EAR file that is being generated for deployment on Glassfish
  7.  Go to your Application->Deploy and deploy either to an EAR file or directly to a Glassfish server connection that you created.

Things should just work, but if they don't then look up the server.log in the log directory and check out what error is in there.

Here is a video demo of the various steps:

Note - right now the deployment of an ADF application takes about 2 minutes on my machine we are hoping to be able to improve this timing in the future. People who are more familiar with Glassfish might want to explore using exploded directory deployment and see if they can get it to work.

 FAQ - some common questions/problems that people posted on comments:

  • "The zip in the video is 70mb, OTN's zip is 20mb" - that's fine. The video was recorded with a pre-production version of the zip. The 20mb zip of adf-essentials is all you need.
  • "My JDeveloper log window show an error on deployment - "status of 400 Deployment cancelled." " - To better understand where the problem is check your server.log file in under your GlassFish server. This will give you the actual error message. 
  • "I'm getting a class not found error in the server.log when trying to deploy" - this usually means one of two things:
    • 1 - you didn't use a -j when unzipping the adf-essentials.zip file - so you ended up with sub directories in your lib directory. -j will get all the jar files to be extracted into a single directory.
    • 2 - you didn't specify Glassfish as the platform in the deployment profile for both the viewController project and your application level. Without doing this JDeveloper won't know to include all the needed jars in the EAR file it is producing. Check the EAR file you got from JDeveloper - if it is smaller than 30MB - you probably skipped this step. 

 


Comments:

Hi,

very nice do see a free light edition.
I try to deploy a app like you descripe but without success.

At starting of the application I get the following Exception:

Error:
oracle.adf.share.ADFShareException: getMDSInstance error at oracle.adf.share.config.FallbackConfigImpl.getMDSInstance(FallbackConfigImpl.java:103)
....
Caused by: java.lang.ClassNotFoundException: oracle.ias.cache.CacheException

"Enable User Customizations" is disabled, I wonder why MDS is loaded :\

Best Regarsd,
Martin

Posted by Martin on September 25, 2012 at 07:25 AM PDT #

Martin,
Make sure you added the -Doracle.mds.cache=simple parameter to your GlassFish server configuration and that you restarted your GlassFish after adding that parameter.

Posted by Shay on September 25, 2012 at 08:50 AM PDT #

Hi,
When I starting application deployed to glassfish I get the following error:

[#|2012-09-25T15:02:22.209+0200|FINEST|glassfish3.1.2|oracle.adf.share.http.ServletADFContext|_ThreadID=23;_ThreadName=Thread-2;ClassName=oracle.adf.share.http.ServletADFContext;MethodName=resetThreadContext;|Reset thread|#]

[#|2012-09-25T15:02:22.209+0200|CONFIG|glassfish3.1.2|oracle.adf.model.servlet.ADFBindingFilter|_ThreadID=23;_ThreadName=Thread-2;|ADF web request|#]

[#|2012-09-25T15:02:22.210+0200|WARNING|glassfish3.1.2|javax.enterprise.system.container.web.com.sun.enterprise.web|_ThreadID=23;_ThreadName=Thread-2;|StandardWrapperValve[Faces Servlet]: PWC1406: Servlet.service() for servlet Faces Servlet threw exception
java.lang.NullPointerException
at oracle.adfinternal.view.faces.partition.FeatureHandler._startFeaturesChildElement(FeatureHandler.java:178)
at oracle.adfinternal.view.faces.partition.FeatureHandler.startElement(FeatureHandler.java:76)
at org.allcolor.xml.parser.CShaniSaxParser.parseStartTag(CShaniSaxParser.java:1375)
at org.allcolor.xml.parser.CXmlParser.parseSTARTTag(CXmlParser.java:1405)
at org.allcolor.xml.parser.CXmlParser.parse(CXmlParser.java:682)
at org.allcolor.xml.parser.CShaniSaxParser.parse(CShaniSaxParser.java:767)
at javax.xml.parsers.SAXParser.parse(SAXParser.java:395)
at oracle.adfinternal.view.faces.partition.FeatureUtils._parseFeatures(FeatureUtils.java:146)
at oracle.adfinternal.view.faces.partition.FeatureUtils._parseFeatures(FeatureUtils.java:89)
at oracle.adfinternal.view.faces.partition.FeatureUtils.loadFeatures(FeatureUtils.java:48)
at oracle.adfinternal.view.faces.partition.PartitionManager._createPartitionManager(PartitionManager.java:282)
at oracle.adfinternal.view.faces.partition.PartitionManager.init(PartitionManager.java:108)
at oracle.adfinternal.view.faces.config.rich.RegistrationConfigurator.init(RegistrationConfigurator.java:153)
at org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl.init(GlobalConfiguratorImpl.java:399)
at org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl.beginRequest(GlobalConfiguratorImpl.java:205)
at org.apache.myfaces.trinidadinternal.config.GlobalConfiguratorImpl.getExternalContext(GlobalConfiguratorImpl.java:328)
at org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl$CacheRenderKit.<init>(FacesContextFactoryImpl.java:84)
at org.apache.myfaces.trinidadinternal.context.FacesContextFactoryImpl.getFacesContext(FacesContextFactoryImpl.java:62)
at com.sun.faces.context.InjectionFacesContextFactory.getFacesContext(InjectionFacesContextFactory.java:121)
at javax.faces.webapp.FacesServlet.service(FacesServlet.java:498)
at org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:343)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at oracle.adf.model.servlet.ADFBindingFilter.doFilter(ADFBindingFilter.java:173)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at oracle.adf.library.webapp.LibraryFilter.doFilter(LibraryFilter.java:180)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:256)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:217)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:279)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:175)
at org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655)
at org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161)
at org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231)
at com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317)
at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195)
at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860)
at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757)
at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056)
at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229)
at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104)
at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90)
at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79)
at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54)
at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59)
at com.sun.grizzly.ContextTask.run(ContextTask.java:71)
at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532)
at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513)
at java.lang.Thread.run(Thread.java:662)
|#]

The application runs fine on weblogic.
I have no idea how to debug this issue.

Best Regards,
MG

Posted by MG on September 25, 2012 at 02:42 PM PDT #

Hi Shay,

first of all thanks for the detailed step by step instructions + video. Just works!

There is one thing I would like to know. Why all those libraries must be bundled into the EAR/WAR resulting in 60+MB deployment artefact? Is there any good reason for that? I would expect those would be shared with the adf-essentials.zip.

Is there any improvement planed?

Thx+Kind Regards,
Andreas

Posted by Andreas Koop on September 25, 2012 at 03:44 PM PDT #

MG - I would suggest that you post this on the OTN Discussion forum.
I would also suggest first trying to deploy a simple ADF application (something like the Summit demo app) to verify your configuration is ok, before moving over and trying to deploy other applications.
You can also remote debug Glassfish to try and locate which part of your code causes the error.
And if you have a support contract you can contact Oracle Support.

Posted by shay on September 25, 2012 at 04:39 PM PDT #

Andreas,
Glad to hear deployment works for you.
Right now GlassFish doesn't support "Shared libraries", which I think is planned for their next version.
This is why we need to package a bunch of libraries into the EAR. We hope to change this with the next release of GlassFish.

Posted by shay on September 25, 2012 at 04:41 PM PDT #

This is no serious extension as it will only support Windows.
No Linux support...

Posted by Giorgos Chasapis on September 27, 2012 at 01:25 AM PDT #

Giorgos - while I haven't tested this on Linux, I believe the extension should work fine there - you'll just need to go into the preferences and change the command line to match the one needed for Linux. Let me know if this didn't work.

Posted by Shay on September 27, 2012 at 08:53 AM PDT #

Shay, when I want to develop an ADF Essentials application in JDeveloper, how will I know which parts/components i JDeveloper are only available in full version of ADF and I shouldn't use them? as I understand, JDeveloper har only 1 version of ADF components, it's only ADF Essential libraries which should be deployed to a desired application server, which makes difference.

Posted by guest on October 02, 2012 at 06:05 AM PDT #

Hi,

First of all thank you for this post, i had some problems deploying app, but at the and it wall all about me. What can i say is do it like it is in video and now question for Shay.
i had version od JDev 11.1.2.1.0 and on deploy i did not have glasfish3.1 i uninstall that ver and install new one then everything was fine. Is this good way to solve problem? :) or is there any better way?

Posted by guest on October 02, 2012 at 11:59 PM PDT #

Giorgos, my mistake the glassfish extension I wrote uses the windows CMD to run your command line. You can pick up the code for the extension and modify it to use a linux syntax instead.

Posted by Shay on October 05, 2012 at 11:39 AM PDT #

guest,
>> how will I know which parts/components i JDeveloper are only available in full version of ADF and I shouldn't use them?

You can read which parts of ADF are supported in the FAQ. Right now there isn't a feature in JDev that restrict your usage to just the included components.

Posted by Shay on October 05, 2012 at 11:42 AM PDT #

I got an error :java.lang.IllegalArgumentException: PWC2788: setAttribute: Non-serializable attribute with name bck_renovacionEnLinea

I implements Serializable in bck_renovacionEnLinea backing bean and it works. But the are other beans that don't need these implementation. I wonder why.

Posted by guest on October 10, 2012 at 02:21 PM PDT #

HI Shay,
thanks for you hard work and for knowledge that you share ,
while Im trying to deploy application to glassfish 3.1 i receive the following
[08:41:08 AM] Unable to add application
[08:41:08 AM] POST http://localhost:4747/management/domain/applications/application returned a response status of 400
[08:41:08 AM] Deployment cancelled.
[08:41:08 AM] ---- Deployment incomplete ----.
[08:41:08 AM] Remote deployment failure
[08:41:08 AM] Unable to add application
[08:41:08 AM] POST http://localhost:4747/management/domain/applications/application returned a response status of 400

Posted by guest on October 14, 2012 at 09:47 PM PDT #

For those who run into issues with deployment.
For any deployment issue, you should be looking at the log of the Glassfish server to get the detailed error. The log window inside JDeveloper won't tell you much.

Once you find the actual deployment error, use the ADF discussion forum on OTN to post any further questions.

Posted by Shay on October 15, 2012 at 10:39 AM PDT #

Hi Shay
I have simple question about adf and glassfish. Can you tell how good is this solution of implementing adf application. We have intention to make application for 1000 users using this technologies. Is it good idea?

Thank you for you time.

Posted by Neven on October 17, 2012 at 11:42 PM PDT #

Hi,

on jdev 11.1.2.3.0 i've followed thru the step-by-step tips, encountered the following error during employment stage:

Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: oracle/adf/share/logging/ADFLogger.

what might cause that?

Posted by guest on October 25, 2012 at 03:43 AM PDT #

guest - this usually means you didn't use the -j option when extracting the adf_essential.zip file.
Or that you didn't indicate glassfish as the platform in both the view and application deployment profiles.

Posted by Shay on October 26, 2012 at 09:07 AM PDT #

Hi,

Concerning this error
java.lang.NoClassDefFoundError: oracle/adf/share/logging/ADFLogger

Try to put all Jar files from adf-essential on the lib folder of glassfish server (no subfolder)

Hope this helps

Posted by guest on October 31, 2012 at 09:21 AM PDT #

Hi,
Actually I have posted the question but there is no answer ,

One thing , I found that the ADF_essential.zip in your tutorial is 78 MB .
but when download it from oracle the size is 20 MB

Could you please share the adf_essential.zip which used in tutorial.

Posted by guest on October 31, 2012 at 09:39 AM PDT #

Guest, the zip file I used was from the pre-production software, we cleaned it up and the current one you are getting from OTN (20mb) is all you need.
The two things to make sure are that you extract it with the -J option to have all the jars in a single directory without sub directories. And that you set "Glassfish" as the deployment profile platform at the view and application level.

Posted by shay on October 31, 2012 at 10:43 AM PDT #

Still getting error ..
this what I got from server log .

Caused by: java.lang.IllegalArgumentException: java.lang.ClassNotFoundException: oracle.adf.share.glassfish.listener.ADFGlassFishAppLifeCycleListener

Posted by guest on October 31, 2012 at 12:42 PM PDT #

guest, The ADFGlassFishAppLifeCycleListener is part of the adf-share-glassfish.jar file that will be added to your EAR file if you let JDeveloper know that you are deploying to GlassFish through the deployment profile at the application level (steps 4,5 above). If you have the only instance of JDeveloper where this doesn't happen - then just add that JAR manually to your EAR.

Posted by Shay on October 31, 2012 at 01:54 PM PDT #

Hi,
I was trying to deploy an ADF application to glassfish(3.1) (Full version)from Jdeveloper . I configured all the things as this website states. but it shows following error.

any help appreciated.

java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! javax.el.ELContext java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: CONFIGURATION FAILED! javax.el.ELContext at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:921) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:901) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:733) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:2019) at com.sun.enterprise.web.WebContainer.loadWebModule(WebContainer.java:1669) at com.sun.enterprise.web.WebApplication.start(WebApplication.java:109) at org.glassfish.internal.data.EngineRef.start(EngineRef.java:130) at org.glassfish.internal.data.ModuleInfo.start(ModuleInfo.java:269) at org.glassfish.internal.data.ApplicationInfo.start(ApplicationInfo.java:301) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:461) at com.sun.enterprise.v3.server.ApplicationLifecycle.deploy(ApplicationLifecycle.java:240) at org.glassfish.deployment.admin.DeployCommand.execute(DeployCommand.java:389) at com.sun.enterprise.v3.admin.CommandRunnerImpl$1.execute(CommandRunnerImpl.java:348) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:363) at com.sun.enterprise.v3.admin.CommandRunnerImpl.doCommand(CommandRunnerImpl.java:1085) at com.sun.enterprise.v3.admin.CommandRunnerImpl.access$1200(CommandRunnerImpl.java:95) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1291) at com.sun.enterprise.v3.admin.CommandRunnerImpl$ExecutionContext.execute(CommandRunnerImpl.java:1259) at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:214) at org.glassfish.admin.rest.ResourceUtil.runCommand(ResourceUtil.java:207) at org.glassfish.admin.rest.resources.TemplateListOfResource.createResource(TemplateListOfResource.java:148) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:601) at com.sun.jersey.spi.container.JavaMethodInvokerFactory$1.invoke(JavaMethodInvokerFactory.java:60) at com.sun.jersey.server.impl.model.method.dispatch.AbstractResourceMethodDispatchProvider$ResponseOutInvoker._dispatch(AbstractResourceMethodDispatchProvider.java:205) at com.sun.jersey.server.impl.model.method.dispatch.ResourceJavaMethodDispatcher.dispatch(ResourceJavaMethodDispatcher.java:75) at com.sun.jersey.server.impl.uri.rules.HttpMethodRule.accept(HttpMethodRule.java:288) at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.SubLocatorRule.accept(SubLocatorRule.java:134) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.ResourceClassRule.accept(ResourceClassRule.java:108) at com.sun.jersey.server.impl.uri.rules.RightHandPathRule.accept(RightHandPathRule.java:147) at com.sun.jersey.server.impl.uri.rules.RootResourceClassesRule.accept(RootResourceClassesRule.java:84) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1469) at com.sun.jersey.server.impl.application.WebApplicationImpl._handleRequest(WebApplicationImpl.java:1400) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1349) at com.sun.jersey.server.impl.application.WebApplicationImpl.handleRequest(WebApplicationImpl.java:1339) at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer._service(GrizzlyContainer.java:182) at com.sun.jersey.server.impl.container.grizzly.GrizzlyContainer.service(GrizzlyContainer.java:147) at org.glassfish.admin.rest.adapter.RestAdapter.service(RestAdapter.java:148) at com.sun.grizzly.tcp.http11.GrizzlyAdapter.service(GrizzlyAdapter.java:179) at com.sun.enterprise.v3.server.HK2Dispatcher.dispath(HK2Dispatcher.java:117) at com.sun.enterprise.v3.services.impl.ContainerMapper$Hk2DispatcherCallable.call(ContainerMapper.java:354) at com.sun.enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) at com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:757) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) at com.sun.grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at com.sun.grizzly.SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) at com.sun.grizzly.ContextTask.run(ContextTask.java:71) at com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) at com.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:722)

Posted by guest on December 16, 2012 at 06:38 AM PST #

Hi Shay,

we are planning to get/buy the full version of ADF.
Question: can we deploy and use ADF full version features with Glassfish open source server?
(like clustering, web service Data controls, ADF security, ADF mobile etc..)

Thanks
srinivas.L

Posted by guest on December 27, 2012 at 01:56 PM PST #

Srinivas,
There are two aspects to the restrictions on which features of the full ADF can or can't you use on Glassfish - one technical and the other is licensing aspect.So while licensing wise with an ADF license you might be able to deploy those on GlassFish, you might run into technical limitations with some of the features because of the lack of some libraries or features on GlassFish - for example the security and WS data control both require libraries that are part of the JRF, and are not available right now as stand alone libraries you can install on GlassFish.

Posted by shay shmeltzer on December 27, 2012 at 02:22 PM PST #

Hi shay

Thank you for your quick reply. we can work around on Security and WS data control using JAAS security and URL service data control alternatives.
we are keen using ADF mobile. So can we deploy ADF mobile apps with ADF full license on Glassfish?

Thank you
srinivas.L

Posted by guest on December 27, 2012 at 02:29 PM PST #

Srinivas, ADF Mobile doesn't deploy to a server - it deploys to mobile devices.
So you don't need any server in order to run ADF Mobile. You can have servers that expose REST or SOAP services that you consume from the mobile devices - but those can be coming from any service/language/etc

Posted by shay shmeltzer on December 27, 2012 at 02:33 PM PST #

Hi Shay

Thanks a lot for your valuable information!!
Keep up the good work

Thanks
srinivas.L

Posted by guest on December 27, 2012 at 02:54 PM PST #

Hi Shay,

The process of Deployment of a ADF Essentials Application, is it the same as described above for Websphere Application Server 6.1 or 7 or 8 as well? As it is mentioned in the Spec for ADF Essentials, an ADF Essentials Application can be deployed on a WAS Server as well. Are there any specific steps that need to be taken care of or will it be similar to the ones you described for Glassfish?

Thanks in advance for your help.

Posted by Rajesh Kumar on January 09, 2013 at 04:33 PM PST #

Rajesh,
I haven't tried using the stand-alone adf-essentials.zip on WebSphere.
But we actually support the full ADF on WebSphere as shown here:
http://docs.oracle.com/cd/E35521_01/admin.111230/e16179/deploy.htm#sthref17
This type of install should also support an ADF Essentials app.

Posted by shay shmeltzer on January 14, 2013 at 10:01 AM PST #

Hello,

I deployed simpe application succesfully, but when I run
application (localhost:8080/MyApplication) I get HTTP Status 404 error.
There some warnings in glassfish log:
[#|2013-01-22T23:31:31.985+0200|INFO|glassfish3.1.2|oracle.adf.share.config.ADFConfigFactory|_ThreadID=21;_ThreadName=Thread-2;|Calling ADF Config instance implementation: class oracle.adf.share.config.ADFConfigImpl.releaseResources()|#]

[#|2013-01-22T23:31:31.986+0200|INFO|glassfish3.1.2|oracle.adf.share.config.ADFConfigFactory|_ThreadID=21;_ThreadName=Thread-2;|Calling ADF Config instance implementation: class oracle.adf.share.config.ADFConfigImpl.releaseResources()|#]

etc...

What might be the reason?

Thank You.

Posted by guest on January 22, 2013 at 10:55 PM PST #

guest - you probably need to access a specific page in your application:
http://localhost:8080/MyApplication/faces/page

Try and run the application in your JDeveloper to see what URL it uses, and then just switch the server/port.

Posted by shay shmeltzer on January 23, 2013 at 11:22 AM PST #

Hi Shay,
essentials is really interesting, but the replication part leaves me a it perplexed, does that mean that the replication offered by glassfish, will not work if the app is developed in ADF?

Posted by guest on January 29, 2013 at 05:40 AM PST #

Guest - I'm not sure what you mean by "replication part". If you are talking about high-availability on Glassfish, we didn't say that it won't work, just that we didn't test it - it might work.

Posted by Shay on January 29, 2013 at 11:00 AM PST #

Shay,
i have an application running on weblogic with shared libraries. From JDev i deploy those as shared libraries.
Is it possible with Glassfish?
I'd like to have a Master App with shared libraries.
Tks.

Posted by guest on January 29, 2013 at 12:47 PM PST #

guest - the only supported way to deploy on Glassfish is as shown above - some libraries are placed in a central directory /lib - but others will need to be part of your application. GlassFish's shared library are not the same thing as WebLogic's ones.

Posted by Shay on January 29, 2013 at 03:01 PM PST #

Hi Shay : We are trying to embark on creating ADF Production Instance, we do have concept in house where we can build Weblogic JVM's as PaaS ( in less than 30 minutes ) and the big Q in front of architects is why does ADF Runtime requires install .. can't we add all needed ADF Runtime libraries to project EAR ? If so, are there any capabilities which not work this route or are there any other dis-advantages going this route ?? We have been doing this very successfully for Springs, Struts based projects ..

If ADF Runtime can be bundled up in the project, it can really simply the infrastructure work for us .. & can generate better adaption.

[ Apologies, not related to GlassFish but still a valid context on this thread I guess ]

Thanks in advance for time answering this ..

Posted by guest on March 19, 2013 at 08:07 AM PDT #

guest - in theory packaging all the libs into the EAR should work - I never tried it myself. The disadvantage is that you are not using the WebLogic shared libraries feature which can result in more memory being consumed by your applications.

Posted by Shay on March 19, 2013 at 11:17 AM PDT #

Thanks Shay for quick response on packaging all lib to EAR. Just a follow up on that. I guess we would be ok to even use the shared libs. But is this something developers can do and skip ADR Install process ??

Something like if we have ADF_RUNTIME.jar - deploy this as shared library to Weblogic. And this should take care of any needs wrt ADF runtime ?? ( In nut shell eliminating install of ADR, if so see this takes us off the hook of making this process step as extra investment while building environments)

1. If yes, is there one consolidated zip like that we can download from Oracle downloads ?
2. Is there a clear read out on what does ADR install process do and what does applying JRF effectively does under the hood ??
3. If there is possibility to skip ADR Install, and ok to use shared libs - do we still miss any capability of ADF, like MDS, Security, WS data control (called on above thread) being not available as libs ??

Thanks again.

Posted by Anshoo Mehra on March 20, 2013 at 09:46 AM PDT #

Hi,
thanks for this great tutorial.
I increased
-XX:MaxPermSize=1712m
but I got: GC overhead limit exceeded
I just wanted to add that I had to increase
-Xmx1524m
That made it work

Posted by guest on May 08, 2013 at 04:22 PM PDT #

I get the same error as Martin above when trying to run ADF Essentials on Tomcat 7. Know of a -Doracle.mds.cache=simple equivalent for Tomcat?

oracle.adf.share.ADFShareException: getMDSInstance error at oracle.adf.share.config.FallbackConfigImpl.getMDSInstance(FallbackConfigImpl.java:103)

Posted by Will on May 21, 2013 at 06:40 PM PDT #

Will, I would expect that you can give the same MDS related Java option in the startup of Tomcat.
There are several blog entries of people who did ADF on Tomcat here:
https://pinboard.in/search/u:OracleADF?query=tomcat

Posted by Shay on May 22, 2013 at 10:10 AM PDT #

HI shay than you for your video and steps i am developed an application
and deployed it every things is getting well with me but when i try to test it from glassfish give an error
thank again

Posted by haider on June 17, 2013 at 11:27 AM PDT #

Haider - if you are encountering problem look up the error code and post your question on the JDeveloper discussion forum:
https://forums.oracle.com/community/developer/english/development_tools/application_development_in_java/jdeveloper_and_adf

Posted by guest on June 17, 2013 at 03:44 PM PDT #

HI SHAY thank for you responding ... how can submit a question in otn forum .could you tell me any about this. than alot

Posted by haider on June 21, 2013 at 05:16 AM PDT #

Haider - go to https://forums.oracle.com/community/developer/english/development_tools/application_development_in_java/jdeveloper_and_adf and press the "start a discussion" link

Posted by guest on June 21, 2013 at 09:31 AM PDT #

One thing that I don't understand Oracle ADF Essentials is free and ADF is licensed. But when I donwnload jdeveloper and can create an basic application using ADF and can deploy it in integrated weblogic server and run it. Though it is licensed and adf never asked me any license key. Can u please clear the confusion.

Another query is can we run ADF essentials on integrated/stand alone weblogic server.

Posted by guest on July 16, 2013 at 08:12 AM PDT #

guest, you accepted the license when you downloaded JDeveloper. There is no license key - we work on an "honor" system - there is nothing technically blocking you from using ADF without license - however if Oracle will find this out they can take steps against this usage.

ADF Essentials can be deployed on WebLogic server - however if you have a license to WebLogic then you already have a license to the full ADF - so no need to restrict yourself.

Posted by shay on July 16, 2013 at 08:42 AM PDT #

Hi Shay, can you tell me if the Hierarchy Viewer in ADF Essentials is also compatible with an Ipad? I note ADF essentials does not include ADF Mobile, the solution for Hierarchy Viewer for an Ipad does this come part of ADF Essentials or ADF Modile ?

https://blogs.oracle.com/shay/entry/deploying_oracle_adf_applications_to

Posted by darragh duffy on September 17, 2013 at 01:00 AM PDT #

Darragh, yes the HV on an iPad is part of ADF Faces, and not ADF Mobile, and is included in ADF Essentials.

Posted by Shay on September 17, 2013 at 09:01 AM PDT #

THE Glassfish plugin is working on jdeveloper 12c.

Posted by guest on September 26, 2013 at 05:20 AM PDT #

THE Glassfish plugin ISN'T working on jdeveloper 12c.

Posted by guest on September 30, 2013 at 08:11 AM PDT #

Hello,

- After deploying my web app on the glassfish server, I can see that dvt graph components are not rendered at all.

I have seen that it's a known issue with ADF Essential which doesn't have the dvt libraries incorporated. It is said that you're working on resolving this issue via a patch.

Could you tell me when this patch will be released .

- Furthermore, I'm searching with not success how to resolve UTF-8 encoding problems :

"WARNING: PWC4011: Unable to set request character encoding to UTF-8 from context /, because request parameters have already been read, or ServletRequest.getReader() has already been called."

I have tried everything without success (Request Filter, paramerer encoding in glassfish-web.xml)

Could you help me ?

Thanks.

Remy

Posted by guest on January 02, 2014 at 03:02 PM PST #

This error:
while Im trying to deploy application to glassfish 3.1 i receive the following
[08:41:08 AM] Unable to add application
[08:41:08 AM] POST http://localhost:4747/management/domain/applications/application returned a response status of 400
[08:41:08 AM] Deployment cancelled.
[08:41:08 AM] ---- Deployment incomplete ----.
[08:41:08 AM] Remote deployment failure
[08:41:08 AM] Unable to add application
[08:41:08 AM] POST http://localhost:4747/management/domain/applications/application returned a response status of 400

Is from installing WEB profile version of Glassfish.

Posted by David Gress on January 21, 2014 at 03:17 AM PST #

Hello,

Is it possible to deploy on JBoss 7?

Posted by guest on January 28, 2014 at 02:47 AM PST #

Hi Shay,
many thanks for sharing this information. I created dummy ADF app to test your tutorial. I discovered that if you select the option Application -> Application Properties-> Deployment->Platform->glashfish3.1 EAR package size increases from 800KB to 90 MB. I have two quiestions:
1.Is it possible to reduce this size by implementing ADF libraries on server site?
2. I don't know why but I'm able to deploy EAR app to glashfish installed only on windows system. I've done the same configuration on centoes and durring deployment I have a msg: "No response from Domain Admin Server after 600 seconds." Any hints?

Regards.
Robert

Posted by guest on February 26, 2014 at 04:00 PM PST #

Robert,

1. We package some of the ADF libraries that are needed in the EAR, in WebLogic these libraries are shared libraries. You could try doing the same on GlassFish if you know how.
2. Not sure what is causing this. Try deploying the EAR directly from the GlassFish Admin console instead.

Posted by Shay Shmeltzer on February 27, 2014 at 10:22 AM PST #

Post a Comment:
  • HTML Syntax: NOT allowed
About

me
I'm a Director of Product Management for the Oracle Java Development Tools.
Follow me:
Search

Archives
« April 2014
SunMonTueWedThuFriSat
  
1
2
3
4
5
6
7
8
9
10
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
   
       
Today