Publication Extension on Cluster

Hi,

I have implemented a “Password Protect” publication extension, as described here: https://blogs.sap.com/2015/10/02/publication-extension-password-protect-publication-articrafts/

This works fine when the SIA is run as LocalSystem.

However, when the SIA is run as a Domain Account, due to it being a clustered deployment with the filestore residing on a network share, the publication extension fails:


2017-06-09 16:34:43,476 ERROR [Transport:Shared-8/34] BusinessObjects_PublicationPostProcessingAdminLog_Instance_29502_0 - [Publication ID # 29502] - Post-processing plugin failure! Plugin class com.XXXX.password_protect.PasswordProtection threw an exception. (FBE60405)

java.lang.ClassNotFoundException: com.XXXX.password_protect.PasswordProtection

at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:513)

at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:429)

at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:417)

at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)

at java.lang.ClassLoader.loadClass(ClassLoader.java:426)

at java.lang.Class.forName0(Native Method)

at java.lang.Class.forNameFW(Class.java:357)

at java.lang.Class.forName(Class.java:265)

at com.businessobjects.publisher.postprocessing.PostProcessingUtility.callEventHandlers(PostProcessingUtility.java:638)

at com.businessobjects.publisher.postprocessing.PostProcessingUtility.postProcessScopeBatch(PostProcessingUtility.java:304)

at com.businessobjects.framework.services.oca2.publishing.postprocessing.PublishingPostProcessingService.postProcess(PublishingPostProcessingService.java:85)

at com.businessobjects.framework.services.oca2.publishing.postprocessing.PublishingPostProcessingServiceMessageReceiverInOut.invokeBusinessLogic(PublishingPostProcessingServiceMessageReceiverInOut.java:49)

at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)

at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)

at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)

at com.businessobjects.framework.servers.platform.modules.pojo.axis2.BIPRequestHandler.process(BIPRequestHandler.java:189)

at com.businessobjects.framework.servers.platform.transport.internal.TransportRequestInterceptor.process(TransportRequestInterceptor.java:128)

at com.crystaldecisions.sdk.occa.transport.internal.BIPTransportImpl.post(BIPTransportImpl.java:90)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.CommonTransportInterceptor.invokeHelper(CommonTransportInterceptor.java:116)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.CommonTransportInterceptor.invoke(CommonTransportInterceptor.java:89)

at com.businessobjects.framework.servers.common.proxy.cglib.MethodInterceptorChain.intercept(MethodInterceptorChain.java:136)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA$$EnhancerByCGLIB$$5ce0fb1e.post(<generated>)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA._OB_op_post(BIPTransportPOA.java:120)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA._invoke(BIPTransportPOA.java:87)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.ServantDispatcher.dispatch(ServantDispatcher.java:234)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.POA_impl._do_OB_dispatch(POA_impl.java:1980)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.POA_impl._OB_dispatch(POA_impl.java:1916)

at com.crystaldecisions.thirdparty.com.ooc.OB.DispatchRequest_impl.invoke(DispatchRequest_impl.java:122)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.ThreadPoolDispatchStrategy$Dispatcher.run(ThreadPoolDispatchStrategy.java:271)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:812)

2017-06-09 16:34:43,507 ERROR [Transport:Shared-8/34] BusinessObjects_PublicationPostProcessingAdminLog_Instance_29502_0 - [Publication ID # 29502] - An exception was caught during post-processing. (FBE60401)

com.businessobjects.publisher.exception.PublishingException$PostProcessingPluginClassNotFound: The Post-Processing plugin with class com.XXXX.password_protect.PasswordProtection could not be located. Did you configure your publication properly? (FBE42003)

at com.businessobjects.publisher.postprocessing.PostProcessingUtility.callEventHandlers(PostProcessingUtility.java:655)

at com.businessobjects.publisher.postprocessing.PostProcessingUtility.postProcessScopeBatch(PostProcessingUtility.java:304)

at com.businessobjects.framework.services.oca2.publishing.postprocessing.PublishingPostProcessingService.postProcess(PublishingPostProcessingService.java:85)

at com.businessobjects.framework.services.oca2.publishing.postprocessing.PublishingPostProcessingServiceMessageReceiverInOut.invokeBusinessLogic(PublishingPostProcessingServiceMessageReceiverInOut.java:49)

at org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)

at org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:114)

at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181)

at com.businessobjects.framework.servers.platform.modules.pojo.axis2.BIPRequestHandler.process(BIPRequestHandler.java:189)

at com.businessobjects.framework.servers.platform.transport.internal.TransportRequestInterceptor.process(TransportRequestInterceptor.java:128)

at com.crystaldecisions.sdk.occa.transport.internal.BIPTransportImpl.post(BIPTransportImpl.java:90)

at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)

at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at java.lang.reflect.Method.invoke(Method.java:497)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.CommonTransportInterceptor.invokeHelper(CommonTransportInterceptor.java:116)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.CommonTransportInterceptor.invoke(CommonTransportInterceptor.java:89)

at com.businessobjects.framework.servers.common.proxy.cglib.MethodInterceptorChain.intercept(MethodInterceptorChain.java:136)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA$$EnhancerByCGLIB$$5ce0fb1e.post(<generated>)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA._OB_op_post(BIPTransportPOA.java:120)

at com.crystaldecisions.enterprise.ocaframework.idl.OCA2.BIPTransportPOA._invoke(BIPTransportPOA.java:87)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.ServantDispatcher.dispatch(ServantDispatcher.java:234)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.POA_impl._do_OB_dispatch(POA_impl.java:1980)

at com.crystaldecisions.thirdparty.com.ooc.OBPortableServer.POA_impl._OB_dispatch(POA_impl.java:1916)

at com.crystaldecisions.thirdparty.com.ooc.OB.DispatchRequest_impl.invoke(DispatchRequest_impl.java:122)

at com.businessobjects.framework.servers.platform.adapters.ebus.orb.ThreadPoolDispatchStrategy$Dispatcher.run(ThreadPoolDispatchStrategy.java:271)

at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)

at java.util.concurrent.FutureTask.run(FutureTask.java:266)

at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)

at java.lang.Thread.run(Thread.java:812)

Few things i’d like to point out:

  • The Domain Account i’m using has full Administraton rights on each BI server in the cluster
  • The publication extension has been entered correctly to run “Before Publication Delivery”
  • OS is Windows Server 2008 R2
  • BI version is 4.2 SP2

Does anybody have any ideas on how to resolve this?

UPDATE:
It doesn’t look like the issue lies with the Domain Account - I also have a single server deployment (not clustered), and I have just changed the SIA on this server to run as the same domain account. Once i had done this, I didn’t experience any errors with the publication extension on this server. The problem just seems to be on a clustered installation.

Thanks

Dan


dgarretty (BOB member since 2016-04-05)

Forgive the obvious question, but did you put the jar file on all nodes in the cluster, and restart all SIAs?


joepeters :us: (BOB member since 2002-08-29)

Yes the jar files are on all nodes


dgarretty (BOB member since 2016-04-05)