We developed an application named "Receiver" which will run inside Websphere application client container. We have an interface that connects to another application "sender" that has a script named EAC connected to our server with socket and send some commands. We Receiver application on our server works as a Socket server listen on a Port (Ex: 51001) and accepts the commands coming from the Sender application. We will parse that command and trigger a workflow.

The receiver application monitor the Sender. the sender EAC script will send Heartbeat messages. We will maintain Threads to accept and parse the commands (Each thread maintains one command). This main thread uses MINA lib. It works as a socket server and listens at the port 51001.

Once the Receiver application receive the command sent by Sender, We construct an argument array of the command and use WorkFlowCLI.class. The code is below,

String[] newArgs = new String[6];
newArgs[0] = "-v";
newArgs[1] = "-opsFile";
newArgs[2] = opsFilePath;
newArgs[3] = "-op";
newArgs[4] = "OneX Access Restriction";
newArgs[5] = "-command";
newArgs[6] = info.getCommandString();

WorkflowCLI cli = new WorkflowCLI();

In the run method, we are getting java.io.IOException: couldn't load resource ops11.dtd But when we see the EAR file which has the JAR of WorkflowCLI.class, it has the ops11.dtd packaged. But when we see the run() method, they are doing class.getResourceAsStream() to load the class instead Thread.currentThread().getContextClassLoader().

Will this cause above exception? We have see another problem, when they do any UPGRADES of Sender applications, we see the similar issue even though no changes in Receiver application. But when we do restart of receiver applicatiion the issue is gone. Why was this happenning?

Appreciate your help.