Skip to content
Jinlian(Sunny) Wang edited this page Feb 1, 2021 · 32 revisions

References

To debug in Jetty from eclipse,

.bash_proifle:

export M2_HOME=/Applications/apache-maven-3.0.5 export PATH=$PATH:$M2_HOME/bin export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_45.jdk/Contents/Home export MAVEN_OPTS="-Xmx2048m -Xdebug -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,address=4000,server=y,suspend=n"

and in terminal,

mvn -P devint-test jetty:run

Once server started, set a break point in eclipse, create a remote debug configuration by connecting to localhost and port 4000. Hit enter on the command line to restart Jetty, then hit the web service, the breakpoint shall take effect.

How to create OAuth2RestTemplate

public OAuth2RestOperations oAuth2RestOperations() {
            ClientCredentialsAccessTokenProvider provider = new ClientCredentialsAccessTokenProvider();
            ClientCredentialsResourceDetails clientResourceDetails = new ClientCredentialsResourceDetails();
            clientResourceDetails.setClientId(clientId);
            clientResourceDetails.setClientSecret(clientSecret);
            clientResourceDetails.setAccessTokenUri(tokenUri);
            OAuth2AccessToken accessToken = provider.obtainAccessToken(clientResourceDetails,
                    new DefaultAccessTokenRequest());
            OAuth2RestTemplate restTemplate = new OAuth2RestTemplate(clientResourceDetails,
                    new DefaultOAuth2ClientContext(accessToken));
            CloseableHttpClient client = HttpClients.custom().disableCookieManagement().setMaxConnPerRoute(1000)
                    .setMaxConnTotal(1000).build();
            HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(client);
            requestFactory.setReadTimeout(1000000);
            requestFactory.setConnectTimeout(1000000);
            restTemplate.setRequestFactory(requestFactory);
            return restTemplate;
        }

To make a call using it,

ResponseEntity<MerchantResponse[]> apiResponse = oAuth2RestOperations.exchange(serviceUrl, HttpMethod.POST, requestEntity,MerchantResponse[].class);

Generate Heap Dump

jmap -dump:format=b,file=user_heap.hprof <pid>

or Add the below JVM property for the container.

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/tmp/heap/out_of_memory_<any_number_that_uniquely_identifies_the_container>.hprof

Reference: HOW TO CAPTURE HEAP DUMP?

JMS Message Receiving

Create connection to IBM WebSphere MQ:

this.factory = new MQConnectionFactory();
this.factory.setHostName(this.hostName);
this.factory.setTransportType(WMQConstants.WMQ_CM_CLIENT);
this.factory.setPort(this.port);
this.factory.setChannel(this.channelName);
this.factory.setQueueManager(this.queueManagerName);
this.con = this.factory.createConnection(this.userName, this.password);

Receiving messages:

public void receiveMessages() {
	try {
		Session session = this.con.createSession(false, Session.CLIENT_ACKNOWLEDGE);
		Queue queue = session.createQueue(this.queueName);
		MessageConsumer consumer = session.createConsumer(queue);
		consumer.setMessageListener(new MQMessageListener(this));
		this.con.start();
	} catch (Exception ex) {
		LOG.error("Error receiving messages: {}", ex);
		restart(); //Trying to connect to MQ Again Once
	}
}

Message Receiver:

public class MQMessageListener implements MessageListener, Serializable {
    public MQMessageListener(Receiver receiver) {
        this.receiver = receiver;
    }

    @Override
    public void onMessage(Message message) {
        TextMessage mqMessage = (TextMessage) message;
        try {
            String textMessage = mqMessage.getText();
	    this.receiver.handleNewMessage(textMessage);
            mqMessage.acknowledge();
        } catch (Exception ex) {
            LOGGER.error(" Error in receiving message from MQ:{}", ex);
            receiver.restart();
        }
    }
}

API Gateway

Postman

Other Useful Articles

Clone this wiki locally