Skip to Content
0

SMP 3.0 SDK10: Agentry client Component Manager error on logon

Dec 07, 2016 at 02:45 PM

59

avatar image

Hello,

I have created a custom fetch for my workorders attachments (DocumentLink object). While doing so, I also created a custom Component Manager for the attachments by extending the ComponentManager java class.

I added the new component manager in the Agentry config panel and everything works fine when I deploy and test the application.

agentryconfigpanel-compmanager.png

The problem I have is that there are 2 applications on the SMP server:

1) Application A does not use the custom Component Manager.

2) Application B uses the custom Component Manager.

When I try to connect to the server with application A, I get the following user lock error, and the message displayed reference the new Component Manager.

agentry-clientlockedout.png

I checked the SMP console and the user is not already logged in. Is it normal that application A seems to reference the new Component Manager? Is it because any changes we make in the Agentry config panel is applied to all deployed applications?

Kind Regards,

Silver Xaphakdy

10 |10000 characters needed characters left characters exceeded
* Please Login or Register to Answer, Follow or Comment.

2 Answers

Mark Pe
Dec 07, 2016 at 05:50 PM
1

Silver,

Hi. My best estimate of why you are seeing your error are as follows:

1) The technique in deploying an app in SMP 3.0 is understanding the rules of publishing.

When you publish from the Agentry Eclipse Editor you are asked if you want to publish as Major, Minor or Modification.

When you do the publish, you will see your application name with some versioning number. Ex: MyAppName-v1-0-0.agpz where your MyAppName could be SAPWM or SAPIM or SAPSM (Work Manager, Inventory Manager or Service Manager). The first number is Major, the second number is Minor and the last number is Modification.

Now with this knowledge, the device will know how to address the sync. If you do a major number increments it will tell the device to sync and do the first transmit or current transactions with the current version of the app (installed on the device) to process all the transactions before downloading and updating the software first.

For the other 2 (Minor or Modification - Ex: MyAppName-v1-0-1.agpz), you are telling the device to use the latest application published first to process all your transactions. So the device will try to use the most current app first.

This is my first theory: Please read this article

https://blogs.sap.com/2016/06/15/best-practice-smp-30-agentry-updating-cockpit-deployment-patching-backup-and-reversion/

2) My 2nd theory is based on your found source of the issue. After you read my link above, it will tell you the techniques on how to deploy new application when it requires a new Java source file (new jar file). What is required from the SMP 3.0 cockpit in particular + the requirement of incrementing the major, minor or modification by +1 so that the system can detect that there is a change to be updated to the DB.

I hope with this two information + your found source of the issue you will be able to further progress on this subject matter.

Best Regards,

Mark Pe
SAP Platinum Support Engineer

Share
10 |10000 characters needed characters left characters exceeded
Silver Xaphakdy Dec 07, 2016 at 03:36 PM
0

I have found the source of the problem:

In the com.syclo.sap.User java class from "common-20151103.jar", when we get all Component Manager associated with user, the user object registers all "COMPONENT_MANAGERS" from the config Panel. The new java class that I created for the new ComponentManager is deployed on application B, but not on application A.

When user on application A registers the new ComponentManager, there is an error because the new java class was not deployed on application B.

public ComponentManagerI<?> getComponentManager(String name)

throws Exception

{

registerComponentManagers();

ComponentManagerI manager = (ComponentManagerI)this._componentMgrs.get(name);

if (manager == null)

{

String msg = "Component manager " + name + " not found";

throw new AgentryException(msg);

}

return manager;

}

protected void registerComponentManagers()

throws Exception

{

if (this._componentMgrs.isEmpty())

for (String className : getConfigSectionPropertyValues("COMPONENT_MANAGERS").values())

{

registerComponentManager(className);

}

}

Regards,

Silver

Share
10 |10000 characters needed characters left characters exceeded