X

Shay Shmeltzer's Oracle Development Tools Tips

Deploying Oracle ADF Essentials Applications to Glassfish

Shay Shmeltzer
Director of Product Management - Oracle

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. 


Join the discussion

Comments ( 70 )
  • Martin Tuesday, September 25, 2012

    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


  • Shay Tuesday, September 25, 2012

    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.


  • MG Tuesday, September 25, 2012

    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


  • Andreas Koop Tuesday, September 25, 2012

    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


  • shay Tuesday, September 25, 2012

    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.


  • shay Tuesday, September 25, 2012

    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.


  • Giorgos Chasapis Thursday, September 27, 2012

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

    No Linux support...


  • Shay Thursday, September 27, 2012

    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.


  • guest Tuesday, October 2, 2012

    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.


  • guest Wednesday, October 3, 2012

    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?


  • Shay Friday, October 5, 2012

    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.


  • Shay Friday, October 5, 2012

    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.


  • guest Wednesday, October 10, 2012

    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.


  • guest Monday, October 15, 2012

    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


  • Shay Monday, October 15, 2012

    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.


  • Neven Thursday, October 18, 2012

    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.


  • guest Thursday, October 25, 2012

    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?


  • Shay Friday, October 26, 2012

    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.


  • guest Wednesday, October 31, 2012

    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


  • guest Wednesday, October 31, 2012

    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.


  • shay Wednesday, October 31, 2012

    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.


  • guest Wednesday, October 31, 2012

    Still getting error ..

    this what I got from server log .

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


  • Shay Wednesday, October 31, 2012

    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.


  • guest Sunday, December 16, 2012

    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)


  • guest Thursday, December 27, 2012

    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


  • shay shmeltzer Thursday, December 27, 2012

    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.


  • guest Thursday, December 27, 2012

    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


  • shay shmeltzer Thursday, December 27, 2012

    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


  • guest Thursday, December 27, 2012

    Hi Shay

    Thanks a lot for your valuable information!!

    Keep up the good work

    Thanks

    srinivas.L


  • Rajesh Kumar Thursday, January 10, 2013

    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.


  • shay shmeltzer Monday, January 14, 2013

    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.


  • guest Wednesday, January 23, 2013

    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.


  • shay shmeltzer Wednesday, January 23, 2013

    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.


  • guest Tuesday, January 29, 2013

    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?


  • Shay Tuesday, January 29, 2013

    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.


  • guest Tuesday, January 29, 2013

    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.


  • Shay Tuesday, January 29, 2013

    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.


  • guest Tuesday, March 19, 2013

    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 ..


  • Shay Tuesday, March 19, 2013

    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.


  • Anshoo Mehra Wednesday, March 20, 2013

    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.


  • guest Wednesday, May 8, 2013

    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


  • Will Wednesday, May 22, 2013

    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)


  • Shay Wednesday, May 22, 2013

    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


  • haider Monday, June 17, 2013

    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


  • guest Monday, June 17, 2013

    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


  • haider Friday, June 21, 2013

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


  • guest Friday, June 21, 2013
  • guest Tuesday, July 16, 2013

    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.


  • shay Tuesday, July 16, 2013

    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.


  • darragh duffy Tuesday, September 17, 2013

    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


  • Shay Tuesday, September 17, 2013

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


  • guest Thursday, September 26, 2013

    THE Glassfish plugin is working on jdeveloper 12c.


  • guest Monday, September 30, 2013

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


  • guest Thursday, January 2, 2014

    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


  • David Gress Tuesday, January 21, 2014

    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.


  • guest Tuesday, January 28, 2014

    Hello,

    Is it possible to deploy on JBoss 7?


  • guest Thursday, February 27, 2014

    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


  • Shay Shmeltzer Thursday, February 27, 2014

    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.


  • Jack Wednesday, May 7, 2014

    What's the difference between ADF and ADF Essentials.

    Is there any function list about ADF and Essentials.


  • Shay Wednesday, May 7, 2014
  • guest Friday, June 6, 2014

    Shay,

    I followed all the steps carefully and I am getting the following exception. Can you please help?

    Error occurred during deployment: Exception while loading the app : java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: Source Document: jar:file:/F:/local/apps/glassfish3/glassfish/domains/domain1/applications/ADFOnGlassFish/ADFOnGlassFish_war/WEB-INF/lib/adf-controller.jar!/META-INF/faces-config.xml Cause: Class 'oracle.adfinternal.controller.faces.lifecycle.ADFLifecyclePhaseListener' is missing a runtime dependency: java.lang.NoClassDefFoundError: javax/el/ELContext. Please see server.log for more details.

    Thanks


  • guest Sunday, June 22, 2014

    I was deploying an ADF 12c application in glassfish 3.1 and getting the following error log. anyone can help me

    Exception while invoking class com.sun.enterprise.web.WebApplication start method java.lang.Exception: java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.IllegalArgumentException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: oracle/adf/share/logging/ADFLogger at com.sun.enterprise.web.WebApplication.start(WebApplication.java:138) 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:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) 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:849) at com.sun.grizzly.http.ProcessorTask.doProcess(ProcessorTask.java:746) at com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1045) at com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:228) 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)


  • Moises Wednesday, November 26, 2014

    hi when i try to change http://127.0.0.1:7101/multitf/faces/main to http://127.0.0.1:9090/multitf/faces/main ( i am configurated my port 9090 ) that send me a message HTTP Status 404 why? i cant find the error


  • Shay Wednesday, November 26, 2014

    Moises - you should post your question on the OTN ADF discussion forum.

    Check out the Glassfish server log file to see if you get errors, and verify your application settings through the Glassfish admin console.


  • guest Thursday, January 1, 2015

    Hello

    I've been facing a problem similar to the one mentioned in a post here on Oct 10 2012 with the following error-

    "PWC2788: setAttribute: Non-serializable attribute with name user"

    My WAR was successfully deployed on glassfish server with the login page appearing. But as soon as I login with credentials I come across a 404 article not found page and the server logs show the above mentioned error. Interestingly it runs fine on tomcat server and VMWare server.

    Any help would be great.

    Thanks in advance

    Preeti


  • guest Friday, February 27, 2015

    Hi,

    Deploy of a migrated ADF application (from 11.1.12 to 13.1.2) to Glassfish fails. Deploy to Integrated WLS is ok. The Glassfish log shows:

    ContainerBase.addChild: start: org.apache.catalina.LifecycleException: java.lang.RuntimeException: com.sun.faces.config.ConfigurationException: Factory 'javax.faces.context.ExceptionHandlerFactory' was not configured properly. at org.apache.catalina.core.StandardContext.start(StandardContext.java:5389) at com.sun.enterprise.web.WebModule.start(WebModule.java:498) at

    A fresh application from 13.1.2 deploys fine to WLS and Glassfish.

    Do you know why or what I should look for?

    Best regards Erik


  • andrejusc Thursday, April 23, 2015

    Hello,

    While we have on this page for ADF:

    http://www.oracle.com/technetwork/developer-tools/jdev/documentation/121300-cert-2164864.html

    GlassFish v3.1 listed as supported Application Server - any plans to officially support GlassFish v4.1 any time soon?


  • guest Tuesday, July 21, 2015

    Hello,

    I am not a beginner in ADF, but I try for several days to make a simple application with adf essential, which will run on Glassfish, but it does not.

    I want to restrict access to some UI Component using the status of the session object Bean.

    something like:

    I have a Session Bean class contain an attribut isLoggedIn accessible with userSessionBean.isLoggedIn

    I want to restrict access to UI Object using EL-Expresion: rendered="#{userSessionBean.isLoggedIn}" but i still get the errors.

    Could you help me how to Use Lifecycle like Session,Request ... Bean in Glassfish with ADF and Jdev 12c?

    Thank u.


  • Mohmmd Hassaballah Monday, August 24, 2015

    I made all steps and it run good but when I Come to

    Go to Platform and choose Glassfish 3.1 from the drop down list. I Cant Find it ..

    So How i can add it to this Drop down list to choose it ??

    I Use

    -Jdeveloper 11.1.2.1.0 R2

    -JDK 6_38

    -Galssfish 3.1.2.2

    - Windows 7 64 bit Ultimate

    Please Advise :) .


  • Shay Monday, August 24, 2015

    Mohmmd - you are using an old version of JDeveloper - upgrade to 11.1.2.4 or even better to 12c


Please enter your name.Please provide a valid email address.Please enter a comment.CAPTCHA challenge response provided was incorrect. Please try again.