IS PLS solution not being updated after deployment

Hi!

I’m trying to update my exposed methods from my application platform but, unfortunately, every time I try to update the services to the Integration Server, they don’t seem to be getting changed. For example, I tried to remove the existent ones (InsertData and UpdateDate), but nothing changes:


image

Even though the Integration Server indicates that the PLS package is synchronized:

image

Are there any logs that I can check to see what’s happening regarding the IS deployment?

Note: There are no compiling errors. I have also tried to Clean the packages in the Integration Server…

Thanks,
Rui Gomes

Hello Rui.
Please perform a clean Designer project rebuild ( i.e. not incremental build ) for your project.
After deploying, please check your bundle jar on the server.
e.g. /profiles/IS/default/workspace/app-deployer/deployer/bundles/

If you look in the deployed bundle, you will find META-INF/gatewayMetadata.xml. This file is used to describe the IS service metadata to the server. If this file still contains the methods you have deleted, this will explain the problem. So a clean project build should update this file. Otherwise, please open an support ticket and be sure to specify the App Platform version.

thank you.

Hi Warren!
Thanks for the quick update.

What do you mean by “clean Designer Project Rebuild”? If it is doing a cleanup from the AppPlatform IS, I have already done that: Right-click on the IS from the “Servers” view and Select “Clean…”.

I can see that the Metadata file is actually getting updated. So the exported methods are there, but I can still see them in the Integration server…

Thanks,
Rui Gomes

Hi Rui, I meant the clean project build. By default as you make changes to an Eclipse project, it performs incremental recompiles for faster builds. But in this case, you need to do a full project rebuild ( i.e. clean ). Its because we have a special App Platform (eclipse) project builder that scans all of the source files in the project looking for that special annotations, so it can generate/regenerate that gatewa

yMetadata.xml file.

I attached a screenshot. - hth
/warren

Yea, I have already tried that as well… No changes :frowning:
I mean, the metadata file is getting updated but the IS, even after redeploying, is still showing the wrong methods :frowning:

If I try to run them in the Integration Server:

Could not run ‘test’
com.softwareag.applatform.pls.gateway.api.GatewayServiceException: Failed attempt to execute App Platform service com.gf.databasesync.Engines method {1}. The method signature does not match the signature expected by the Integration Servers generated service binding.

Ok, so if the deployed bundle is correct, but the generated IS services in your IS package are not correct, then I would need you to please open a ticket with our support folks. I would need the Integration Server log ( server.log ) and the sag-osgi.log file under profiles/IS_default/logs/.
Additionally if you can include that Engine.java and IEngine.java source files, that will help me to understand the total picture.

-ty

Thanks Warren. Im actually starting to think if my workspace is actually corrupted or something. Now it feels like other PLS projects that I have are also getting problems… anyhow, one step at a time. I will be adding the required info to the ticket then.

Thanks!
Rui

Your welcome Rui.
Your comment gave me a thought.
It’s possble you need to clear your OSGi bundle cache.
here’s an example: (You can stop IS, delete everything under ‘org.eclipse.osgi’, and restart)

$ cd /opt/data/installs/trunk/profiles/IS_default/configuration/org.eclipse.osgi/

BE VERY CAREFUL TO ONLY DELETE THE CONTENTS UNDER org.eclipse.osgi. :slight_smile:

ls 159 181 184 199 200 298 322 377 framework.info.9

This will ensure the cache is flushed in case there is corruption there for your deployed project.

This might be it.

Well, this sounds more like an IS problem and I dont think my other colleagues are having this problem, as well. Are you sure it would make sense to clean that up? What are usually the root causes for having to delete that folder? What’s the possible impact that we can have after deleting that folder?

Thanks,
Rui Gomes

Hi Waren,

I actually got a recent exception from the Publish operation while testing out a few things:

“Project bundle generated!
OK
An exception was raised while installing bundle Bundle SymbolicName=GF_PLS_DatabaseSynchronization, version=1.0.0. Cause: null
null
java.lang.NullPointerException
at com.softwareag.applatform.pls.bundle.deployer.DynamicBundleDeployerImpl.logResult(DynamicBundleDeployerImpl.java:206)
at com.softwareag.applatform.pls.bundle.deployer.DynamicBundleDeployerImpl.logInstallResult(DynamicBundleDeployerImpl.java:193)
at com.softwareag.applatform.pls.bundle.deployer.DynamicBundleDeployerImpl.doDeploy(DynamicBundleDeployerImpl.java:124)
at com.softwareag.applatform.pls.bundle.deployer.DynamicBundleDeployerImpl.install(DynamicBundleDeployerImpl.java:62)
at com.softwareag.applatform.pls.bundle.deploy.service.DynamicBundleDeployerMXBeanImpl.install(DynamicBundleDeployerMXBeanImpl.java:43)
at sun.reflect.GeneratedMethodAccessor3053.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.Trampoline.invoke(MethodUtil.java:71)
at sun.reflect.GeneratedMethodAccessor175.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.misc.MethodUtil.invoke(MethodUtil.java:275)
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:193)
at com.sun.jmx.mbeanserver.ConvertingMethod.invokeWithOpenReturn(ConvertingMethod.java:175)
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:117)
at com.sun.jmx.mbeanserver.MXBeanIntrospector.invokeM2(MXBeanIntrospector.java:54)
at com.sun.jmx.mbeanserver.MBeanIntrospector.invokeM(MBeanIntrospector.java:237)
at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:138)
at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
at com.softwareag.platform.jmx.internal.JmxAuthzForwarder.invoke(JmxAuthzForwarder.java:311)
at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
at java.security.AccessController.doPrivileged(Native Method)
at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1408)
at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
at sun.reflect.GeneratedMethodAccessor927.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
at sun.rmi.transport.Transport$1.run(Transport.java:200)
at sun.rmi.transport.Transport$1.run(Transport.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
at java.security.AccessController.doPrivileged(Native Method)
at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)”

Does this help us? This error does seem to be temporary because if I republish, no error pops up.

Thanks,
Rui Gomes

Also found the following exceptions in the server.log:

2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List
2021-03-24 08:59:39 CET [ISC.0076.0005E] BinCoder decode error creating Java serialized object. Excpt:java.lang.ClassNotFoundException: Class:oracle.sql.TIMESTAMPTZ, not in White List

Hi Rui,

1, It is perfectly safe to delete that bundle cache after stopping IS. This cache is managed by the Eclipse OSGi container ( Equinox implementation ). It’s simply a cache created by the container for performance. When you restart IS, it will recreate the cache again as bundles are accessed. An improper shutdown of IS would be one explanation. It’s a good idea to do this and see if this resolves the Null Pointer Exception. Each of those numeric directories in the cache folder from my example above contains the cache for a specific bundle. ( When the Equinox container loads all installed bundles, it uses the bundle id assigned by the OSGi container as the directory name. ) So it is very possible, one of your cached bundles is for the AP project you are trying to deploy, and it has been corrupted.

2, The IS BinCoder decode error is by design. It’s a security feature to ensure any serialized IData only contains classes defined in /IntegrationServer/instances/default/config/security/whitelistclasses.xml. (To avoid security attacks from injecting malicious unexpected classes into memory upon deserialization.) You could add that oracle timestamp class name to the list in the config xml file; however, it seems surprising to me that your serialized IData object would contain this JDBC driver data type class. Are you serializing a java.sql.ResultSet object? If so, it would be a safer approach to transfer your content to into the IData object using generic Java types prior to serializing it. For example, what if the entire result set has not been iterated through when it gets serialized? In that case, you could be missing data still not fetched by the JDBC driver from the database. Another concern would be if you switch drivers or databases in the future and that oracle implementation class type is might no longer be available in the classpath. You would get errors on deserialization.

-hth

Thanks for the update and the explanation!
So, for the Bundle cache folder, would then this be the correct folder:

[ bpmsdev@f1bpmsd4:/3rd_party/softwareag/sit-dd/wM/profiles/IS_SIT/configuration/org.eclipse.osgi ]
ITDC # ls
178 319 393 404 416 429 457 472 487 504 524 546 561 564 567 571 574 577 587 94
198 324 400 411 423 445 460 475 500 505 534 557 562 565 568 572 575 578 589 95
201 343 401 412 425 450 465 480 501 519 541 560 563 566 570 573 576 579 593 framework.info.1986

[ bpmsdev@f1bpmsd4:/3rd_party/softwareag/sit-dd/wM/profiles/IS_SIT/configuration/org.eclipse.osgi ]
ITDC # pwd
/3rd_party/softwareag/sit-dd/wM/profiles/IS_SIT/configuration/org.eclipse.osgi

It looks like it… So I basically just need to 1) Stop the IS; 2) Clean this folder; 3) Start the IS.

Thanks
Rui

Yep, that’s it Rui.

Hi Warren,

We did that but unfortunately the problem still persists…
Let me know if you can remember of any other idea for us to troubleshoot this.

By the way, where can I find in Designer / logs information in case there is any compiling or code errors? The code was changed recently and I tried to rollback as much as I could, but without any success. I wonder if the root cause is actually in the code…

Thanks,
Rui Gomes

Hi Rui, so it sounds like your specific project is a problem based on your comment about your colleagues not having a problem. You’ve already imported it into a clean Eclipse workspace, so that’s not an issue either.

To answer your question about Designer logs. The log file is written to the workspace directory as a ‘.log’ file. You can also use the Designer UI to pull it up. From the Help menu, click through this path: ‘About Software AG Designer / Installation Details / Configuration / View Error Log’

As for your problem, you will have to open a ticket with Global Support. When you open the ticket, please attach a zip of your latest workspace, so I can look at this project in detail.

-thank you, /warren

Hi Warren,

Thank you for your suggestions. I also believe the problem is in this specific project (some code problem or something, that I can’t find it). I have tried to create a new project and it gets published just fine. So I am trying to look for the root cause in a project of hundreds and hundreds of lines of code (there needs to be a better way to do this…)

Yes, I have already checked the Designer log… No errors there either.
The support case has been opened since this post was created: 5440031

Thanks,
Rui Gomes

Thanks Rui. If your project bundle has made it to /profiles/IS_default/workspace/app-platform/deployer/bundles, that confirms the Designer-side deploy operation was successful. If there are no server-side errors, then perhaps turning up debugging might help.

/profiles/IS_default/configuration/logging/log_config.xml

add this:

  <logger name="com.softwareag.applatform.pls" additivity="true" >
        <level value="debug" />
    </logger>

It will dump more details to ‘sag-osgi.log’

Otherwise, I will wait for the support case to reach me. -ty