Programming

A Weird Exception, java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name “FilterName”

Today i found an exception while deploying my .war application to Tomcat web server for production usage, very weird because i never had this exception on my IDE before. This is the complete exception stacktrace,

Caused by: java.lang.IllegalArgumentException: Filter mapping specifies an unknown filter name FilterName
	at org.apache.catalina.core.StandardContext.addFilterMap(StandardContext.java:2506)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)

below is my web.xml content,

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="crm" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd">
    <display-name>edw</display-name>
    <context-param>
        <param-name>edw</param-name>
        <param-value>edw</param-value>
    </context-param>
    
    <filter-mapping>
        <filter-name>FilterName</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>
	
    <filter>
        <filter-name>FilterName</filter-name>
        <filter-class>com.edw.filter.FilterName</filter-class>
    </filter>
</web-app>

How to fix it is actually very simple, i only need to swap between and tag. Below is the correct web.xml.

<?xml version="1.0" encoding="UTF-8"?>
<web-app id="crm" version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_4.xsd">
    <display-name>edw</display-name>
    <context-param>
        <param-name>edw</param-name>
        <param-value>edw</param-value>
    </context-param>
    
    <filter>
        <filter-name>FilterName</filter-name>
        <filter-class>com.edw.filter.FilterName</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>FilterName</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

Weird eh :p

How to Compress Log4J’s Log File

Today i found a very weird condition on one of my end user. Their application’s log file is so big, despite the log4j’s log level is set to INFO. Im using log4j’s DailyRollingFileAppender which would create a new log file everyday. Each file’s size is around 10 to 20MB, and i see the log files is like 3 months old. Which makes total of almost 2GBs of log files.

So my solution to them is to compress everyday’s log into gzip, gz or perhaps into zip file. Basically, im using one of log4j’s companion..

Okay, so here is my solution, first a simple pom.xml to download the libraries needed,

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.edw.compresslogfile</groupId>
    <artifactId>CompressLogFile</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>CompressLogFile</name>
    <url>http://maven.apache.org</url>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>apache-log4j-extras</artifactId>
            <version>1.0</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>                        
    </dependencies>
</project>

And then my log4j.properties file, please take a look at line 7. It will create a new log file for every second, change it into “yyyyMMdd” if you want to create a daily appender.

log4j.rootLogger=DEBUG, request

log4j.appender.request=org.apache.log4j.rolling.RollingFileAppender
log4j.appender.request.File=msg.log
log4j.appender.request.RollingPolicy=org.apache.log4j.rolling.TimeBasedRollingPolicy
log4j.appender.request.RollingPolicy.ActiveFileName =msg.log
log4j.appender.request.RollingPolicy.FileNamePattern=msg.%d{yyyyMMdd.HHmmss}.gz
log4j.appender.request.layout = org.apache.log4j.PatternLayout
log4j.appender.request.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n

And my simple java test case

package com.edw.compresslogfile;

import org.apache.log4j.Logger;

/**
 * Hello world!
 *
 */
public class App {

    private static final Logger LOGGER = Logger.getLogger(App.class);

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            try {
                LOGGER.debug("Hello World " + i);
                Thread.sleep(5000);
            } catch (Exception e) {
            }
        }
    }
}

It will create a compressed log file for every second.

This is the project structure on my Netbeans,

Hope it helped others, cheers (B)

Simulate A Post Request Using Java

Today, i’ll do a simple example on how to simulate a http post request using Apache Common Http Components. This is a usefull utility, because i use it heavily on many projects, specially to do a simple messaging between desktop clients and the server side. Very simple, very lightweight and also very reliable.

Okay, first i start with the server version of the application. I create a new WebProject on Netbeans, create a simple servlet and deploy it on tomcat. This is a very simple servlet to print on netbeans console and give response whether 0 if failed, or 1 if succeed.

package com.edw.servlet;

import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;

public class LoginServlet extends HttpServlet {
    
    private Logger logger = Logger.getLogger(LoginServlet.class);
    
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            String username = request.getParameter("username");
            String password = request.getParameter("password");
            
            logger.debug("receiving post " + username + " and " + password);
            response.getWriter().write("1");
        } catch (Exception e) {
            logger.error(e,e);
            response.getWriter().write("0");
        }                
    }
}

As usual, i register my servlet on web.xml.

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
    <servlet>
        <servlet-name>loginServlet</servlet-name>
        <servlet-class>com.edw.servlet.LoginServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginServlet</servlet-name>
        <url-pattern>/loginServlet</url-pattern>
    </servlet-mapping>
    <session-config>
        <session-timeout>
            30
        </session-timeout>
    </session-config>
    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

And now is my client’s side Java application.

package com.edw.postsimulator;

import java.util.ArrayList;
import java.util.List;
import org.apache.http.Consts;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;

public class PostSimulator {
    
    // this is your target url
    private static String url = "http://localhost:8084/WebTestPost/loginServlet";
    
    public static void main(String[] args) throws Exception  {
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        // set the parameters
        List <NameValuePair> nvps = new ArrayList<NameValuePair>();
        nvps.add(new BasicNameValuePair("username", "edwin"));
        nvps.add(new BasicNameValuePair("password", "dodol"));

        // set the encoding
        httpPost.setEntity(new UrlEncodedFormEntity(nvps, Consts.UTF_8));

        // send the http request and get the http response
        HttpResponse response = httpclient.execute(httpPost);
        HttpEntity resEntity = response.getEntity();
		
        // read the server's response contents
        System.out.println(EntityUtils.toString(resEntity));
    }
}

These are what is written on my Netbean’s console,

And this is my Netbean’s project configurations

Hope it helped others, Cheers :-[

How to Convert from ASCII to EBCDIC Using Java

Today I had a specific requirement to connect to a corebanking application using ISO8583. Their requirement is that every message needs to be on EBCDIC format, that’s why i need to create a class to do converting from ASCII into EBCDIC format.

After sometime googling, i found a class that i hope would fit with my requirement.

public class Converter {

    private static byte[] ASCII2EBCDIC = new byte[256];

    static {
        ASCII2EBCDIC[0x00] = (byte) 0x00;
        ASCII2EBCDIC[0x01] = (byte) 0x01;
        ASCII2EBCDIC[0x02] = (byte) 0x02;
        ASCII2EBCDIC[0x03] = (byte) 0x03;
        ASCII2EBCDIC[0x04] = (byte) 0x37;
        ASCII2EBCDIC[0x05] = (byte) 0x2D;
        ASCII2EBCDIC[0x06] = (byte) 0x2E;
        ASCII2EBCDIC[0x07] = (byte) 0x2F;
        ASCII2EBCDIC[0x08] = (byte) 0x16;
        ASCII2EBCDIC[0x09] = (byte) 0x05;
        ASCII2EBCDIC[0x0A] = (byte) 0x25;
        ASCII2EBCDIC[0x0B] = (byte) 0x0B;
        ASCII2EBCDIC[0x0C] = (byte) 0x0C;
        ASCII2EBCDIC[0x0D] = (byte) 0x0D;
        ASCII2EBCDIC[0x0E] = (byte) 0x0E;
        ASCII2EBCDIC[0x0F] = (byte) 0x0F;
        ASCII2EBCDIC[0x10] = (byte) 0x10;
        ASCII2EBCDIC[0x11] = (byte) 0x11;
        ASCII2EBCDIC[0x12] = (byte) 0x12;
        ASCII2EBCDIC[0x13] = (byte) 0x13;
        ASCII2EBCDIC[0x14] = (byte) 0x3C;
        ASCII2EBCDIC[0x15] = (byte) 0x3D;
        ASCII2EBCDIC[0x16] = (byte) 0x32;
        ASCII2EBCDIC[0x17] = (byte) 0x26;
        ASCII2EBCDIC[0x18] = (byte) 0x18;
        ASCII2EBCDIC[0x19] = (byte) 0x19;
        ASCII2EBCDIC[0x1A] = (byte) 0x3F;
        ASCII2EBCDIC[0x1B] = (byte) 0x27;
        ASCII2EBCDIC[0x1C] = (byte) 0x1C;
        ASCII2EBCDIC[0x1D] = (byte) 0x1D;
        ASCII2EBCDIC[0x1E] = (byte) 0x1E;
        ASCII2EBCDIC[0x1F] = (byte) 0x1F;
        ASCII2EBCDIC[0x20] = (byte) 0x40;
        ASCII2EBCDIC[0x21] = (byte) 0x4F;
        ASCII2EBCDIC[0x22] = (byte) 0x7F;
        ASCII2EBCDIC[0x23] = (byte) 0x7B;
        ASCII2EBCDIC[0x24] = (byte) 0x5B;
        ASCII2EBCDIC[0x25] = (byte) 0x6C;
        ASCII2EBCDIC[0x26] = (byte) 0x50;
        ASCII2EBCDIC[0x27] = (byte) 0x7D;
        ASCII2EBCDIC[0x28] = (byte) 0x4D;
        ASCII2EBCDIC[0x29] = (byte) 0x5D;
        ASCII2EBCDIC[0x2A] = (byte) 0x5C;
        ASCII2EBCDIC[0x2B] = (byte) 0x4E;
        ASCII2EBCDIC[0x2C] = (byte) 0x6B;
        ASCII2EBCDIC[0x2D] = (byte) 0x60;
        ASCII2EBCDIC[0x2E] = (byte) 0x4B;
        ASCII2EBCDIC[0x2F] = (byte) 0x61;
        ASCII2EBCDIC[0x30] = (byte) 0xF0;
        ASCII2EBCDIC[0x31] = (byte) 0xF1;
        ASCII2EBCDIC[0x32] = (byte) 0xF2;
        ASCII2EBCDIC[0x33] = (byte) 0xF3;
        ASCII2EBCDIC[0x34] = (byte) 0xF4;
        ASCII2EBCDIC[0x35] = (byte) 0xF5;
        ASCII2EBCDIC[0x36] = (byte) 0xF6;
        ASCII2EBCDIC[0x37] = (byte) 0xF7;
        ASCII2EBCDIC[0x38] = (byte) 0xF8;
        ASCII2EBCDIC[0x39] = (byte) 0xF9;
        ASCII2EBCDIC[0x3A] = (byte) 0x7A;
        ASCII2EBCDIC[0x3B] = (byte) 0x5E;
        ASCII2EBCDIC[0x3C] = (byte) 0x4C;
        ASCII2EBCDIC[0x3D] = (byte) 0x7E;
        ASCII2EBCDIC[0x3E] = (byte) 0x6E;
        ASCII2EBCDIC[0x3F] = (byte) 0x6F;
        ASCII2EBCDIC[0x40] = (byte) 0x7C;
        ASCII2EBCDIC[0x41] = (byte) 0xC1;
        ASCII2EBCDIC[0x42] = (byte) 0xC2;
        ASCII2EBCDIC[0x43] = (byte) 0xC3;
        ASCII2EBCDIC[0x44] = (byte) 0xC4;
        ASCII2EBCDIC[0x45] = (byte) 0xC5;
        ASCII2EBCDIC[0x46] = (byte) 0xC6;
        ASCII2EBCDIC[0x47] = (byte) 0xC7;
        ASCII2EBCDIC[0x48] = (byte) 0xC8;
        ASCII2EBCDIC[0x49] = (byte) 0xC9;
        ASCII2EBCDIC[0x4A] = (byte) 0xD1;
        ASCII2EBCDIC[0x4B] = (byte) 0xD2;
        ASCII2EBCDIC[0x4C] = (byte) 0xD3;
        ASCII2EBCDIC[0x4D] = (byte) 0xD4;
        ASCII2EBCDIC[0x4E] = (byte) 0xD5;
        ASCII2EBCDIC[0x4F] = (byte) 0xD6;
        ASCII2EBCDIC[0x50] = (byte) 0xD7;
        ASCII2EBCDIC[0x51] = (byte) 0xD8;
        ASCII2EBCDIC[0x52] = (byte) 0xD9;
        ASCII2EBCDIC[0x53] = (byte) 0xE2;
        ASCII2EBCDIC[0x54] = (byte) 0xE3;
        ASCII2EBCDIC[0x55] = (byte) 0xE4;
        ASCII2EBCDIC[0x56] = (byte) 0xE5;
        ASCII2EBCDIC[0x57] = (byte) 0xE6;
        ASCII2EBCDIC[0x58] = (byte) 0xE7;
        ASCII2EBCDIC[0x59] = (byte) 0xE8;
        ASCII2EBCDIC[0x5A] = (byte) 0xE9;
        ASCII2EBCDIC[0x5B] = (byte) 0x4A;
        ASCII2EBCDIC[0x5C] = (byte) 0xE0;
        ASCII2EBCDIC[0x5D] = (byte) 0x5A;
        ASCII2EBCDIC[0x5E] = (byte) 0x5F;
        ASCII2EBCDIC[0x5F] = (byte) 0x6D;
        ASCII2EBCDIC[0x60] = (byte) 0x79;
        ASCII2EBCDIC[0x61] = (byte) 0x81;
        ASCII2EBCDIC[0x62] = (byte) 0x82;
        ASCII2EBCDIC[0x63] = (byte) 0x83;
        ASCII2EBCDIC[0x64] = (byte) 0x84;
        ASCII2EBCDIC[0x65] = (byte) 0x85;
        ASCII2EBCDIC[0x66] = (byte) 0x86;
        ASCII2EBCDIC[0x67] = (byte) 0x87;
        ASCII2EBCDIC[0x68] = (byte) 0x88;
        ASCII2EBCDIC[0x69] = (byte) 0x89;
        ASCII2EBCDIC[0x6A] = (byte) 0x91;
        ASCII2EBCDIC[0x6B] = (byte) 0x92;
        ASCII2EBCDIC[0x6C] = (byte) 0x93;
        ASCII2EBCDIC[0x6D] = (byte) 0x94;
        ASCII2EBCDIC[0x6E] = (byte) 0x95;
        ASCII2EBCDIC[0x6F] = (byte) 0x96;
        ASCII2EBCDIC[0x70] = (byte) 0x97;
        ASCII2EBCDIC[0x71] = (byte) 0x98;
        ASCII2EBCDIC[0x72] = (byte) 0x99;
        ASCII2EBCDIC[0x73] = (byte) 0xA2;
        ASCII2EBCDIC[0x74] = (byte) 0xA3;
        ASCII2EBCDIC[0x75] = (byte) 0xA4;
        ASCII2EBCDIC[0x76] = (byte) 0xA5;
        ASCII2EBCDIC[0x77] = (byte) 0xA6;
        ASCII2EBCDIC[0x78] = (byte) 0xA7;
        ASCII2EBCDIC[0x79] = (byte) 0xA8;
        ASCII2EBCDIC[0x7A] = (byte) 0xA9;
        ASCII2EBCDIC[0x7B] = (byte) 0xC0;
        ASCII2EBCDIC[0x7C] = (byte) 0x6A;
        ASCII2EBCDIC[0x7D] = (byte) 0xD0;
        ASCII2EBCDIC[0x7E] = (byte) 0xA1;
        ASCII2EBCDIC[0x7F] = (byte) 0x07;
        ASCII2EBCDIC[0x80] = (byte) 0x20;
        ASCII2EBCDIC[0x81] = (byte) 0x21;
        ASCII2EBCDIC[0x82] = (byte) 0x22;
        ASCII2EBCDIC[0x83] = (byte) 0x23;
        ASCII2EBCDIC[0x84] = (byte) 0x24;
        ASCII2EBCDIC[0x85] = (byte) 0x15;
        ASCII2EBCDIC[0x86] = (byte) 0x06;
        ASCII2EBCDIC[0x87] = (byte) 0x17;
        ASCII2EBCDIC[0x88] = (byte) 0x28;
        ASCII2EBCDIC[0x89] = (byte) 0x29;
        ASCII2EBCDIC[0x8A] = (byte) 0x2A;
        ASCII2EBCDIC[0x8B] = (byte) 0x2B;
        ASCII2EBCDIC[0x8C] = (byte) 0x2C;
        ASCII2EBCDIC[0x8D] = (byte) 0x09;
        ASCII2EBCDIC[0x8E] = (byte) 0x0A;
        ASCII2EBCDIC[0x8F] = (byte) 0x1B;
        ASCII2EBCDIC[0x90] = (byte) 0x30;
        ASCII2EBCDIC[0x91] = (byte) 0x31;
        ASCII2EBCDIC[0x92] = (byte) 0x1A;
        ASCII2EBCDIC[0x93] = (byte) 0x33;
        ASCII2EBCDIC[0x94] = (byte) 0x34;
        ASCII2EBCDIC[0x95] = (byte) 0x35;
        ASCII2EBCDIC[0x96] = (byte) 0x36;
        ASCII2EBCDIC[0x97] = (byte) 0x08;
        ASCII2EBCDIC[0x98] = (byte) 0x38;
        ASCII2EBCDIC[0x99] = (byte) 0x39;
        ASCII2EBCDIC[0x9A] = (byte) 0x3A;
        ASCII2EBCDIC[0x9B] = (byte) 0x3B;
        ASCII2EBCDIC[0x9C] = (byte) 0x04;
        ASCII2EBCDIC[0x9D] = (byte) 0x14;
        ASCII2EBCDIC[0x9E] = (byte) 0x3E;
        ASCII2EBCDIC[0x9F] = (byte) 0xE1;
        ASCII2EBCDIC[0xA0] = (byte) 0x41;
        ASCII2EBCDIC[0xA1] = (byte) 0x42;
        ASCII2EBCDIC[0xA2] = (byte) 0x43;
        ASCII2EBCDIC[0xA3] = (byte) 0x44;
        ASCII2EBCDIC[0xA4] = (byte) 0x45;
        ASCII2EBCDIC[0xA5] = (byte) 0x46;
        ASCII2EBCDIC[0xA6] = (byte) 0x47;
        ASCII2EBCDIC[0xA7] = (byte) 0x48;
        ASCII2EBCDIC[0xA8] = (byte) 0x49;
        ASCII2EBCDIC[0xA9] = (byte) 0x51;
        ASCII2EBCDIC[0xAA] = (byte) 0x52;
        ASCII2EBCDIC[0xAB] = (byte) 0x53;
        ASCII2EBCDIC[0xAC] = (byte) 0x54;
        ASCII2EBCDIC[0xAD] = (byte) 0x55;
        ASCII2EBCDIC[0xAE] = (byte) 0x56;
        ASCII2EBCDIC[0xAF] = (byte) 0x57;
        ASCII2EBCDIC[0xB0] = (byte) 0x58;
        ASCII2EBCDIC[0xB1] = (byte) 0x59;
        ASCII2EBCDIC[0xB2] = (byte) 0x62;
        ASCII2EBCDIC[0xB3] = (byte) 0x63;
        ASCII2EBCDIC[0xB4] = (byte) 0x64;
        ASCII2EBCDIC[0xB5] = (byte) 0x65;
        ASCII2EBCDIC[0xB6] = (byte) 0x66;
        ASCII2EBCDIC[0xB7] = (byte) 0x67;
        ASCII2EBCDIC[0xB8] = (byte) 0x68;
        ASCII2EBCDIC[0xB9] = (byte) 0x69;
        ASCII2EBCDIC[0xBA] = (byte) 0x70;
        ASCII2EBCDIC[0xBB] = (byte) 0x71;
        ASCII2EBCDIC[0xBC] = (byte) 0x72;
        ASCII2EBCDIC[0xBD] = (byte) 0x73;
        ASCII2EBCDIC[0xBE] = (byte) 0x74;
        ASCII2EBCDIC[0xBF] = (byte) 0x75;
        ASCII2EBCDIC[0xC0] = (byte) 0x76;
        ASCII2EBCDIC[0xC1] = (byte) 0x77;
        ASCII2EBCDIC[0xC2] = (byte) 0x78;
        ASCII2EBCDIC[0xC3] = (byte) 0x80;
        ASCII2EBCDIC[0xC4] = (byte) 0x8A;
        ASCII2EBCDIC[0xC5] = (byte) 0x8B;
        ASCII2EBCDIC[0xC6] = (byte) 0x8C;
        ASCII2EBCDIC[0xC7] = (byte) 0x8D;
        ASCII2EBCDIC[0xC8] = (byte) 0x8E;
        ASCII2EBCDIC[0xC9] = (byte) 0x8F;
        ASCII2EBCDIC[0xCA] = (byte) 0x90;
        ASCII2EBCDIC[0xCB] = (byte) 0x9A;
        ASCII2EBCDIC[0xCC] = (byte) 0x9B;
        ASCII2EBCDIC[0xCD] = (byte) 0x9C;
        ASCII2EBCDIC[0xCE] = (byte) 0x9D;
        ASCII2EBCDIC[0xCF] = (byte) 0x9E;
        ASCII2EBCDIC[0xD0] = (byte) 0x9F;
        ASCII2EBCDIC[0xD1] = (byte) 0xA0;
        ASCII2EBCDIC[0xD2] = (byte) 0xAA;
        ASCII2EBCDIC[0xD3] = (byte) 0xAB;
        ASCII2EBCDIC[0xD4] = (byte) 0xAC;
        ASCII2EBCDIC[0xD5] = (byte) 0xAD;
        ASCII2EBCDIC[0xD6] = (byte) 0xAE;
        ASCII2EBCDIC[0xD7] = (byte) 0xAF;
        ASCII2EBCDIC[0xD8] = (byte) 0xB0;
        ASCII2EBCDIC[0xD9] = (byte) 0xB1;
        ASCII2EBCDIC[0xDA] = (byte) 0xB2;
        ASCII2EBCDIC[0xDB] = (byte) 0xB3;
        ASCII2EBCDIC[0xDC] = (byte) 0xB4;
        ASCII2EBCDIC[0xDD] = (byte) 0xB5;
        ASCII2EBCDIC[0xDE] = (byte) 0xB6;
        ASCII2EBCDIC[0xDF] = (byte) 0xB7;
        ASCII2EBCDIC[0xE0] = (byte) 0xB8;
        ASCII2EBCDIC[0xE1] = (byte) 0xB9;
        ASCII2EBCDIC[0xE2] = (byte) 0xBA;
        ASCII2EBCDIC[0xE3] = (byte) 0xBB;
        ASCII2EBCDIC[0xE4] = (byte) 0xBC;
        ASCII2EBCDIC[0xE5] = (byte) 0xBD;
        ASCII2EBCDIC[0xE6] = (byte) 0xBE;
        ASCII2EBCDIC[0xE7] = (byte) 0xBF;
        ASCII2EBCDIC[0xE8] = (byte) 0xCA;
        ASCII2EBCDIC[0xE9] = (byte) 0xCB;
        ASCII2EBCDIC[0xEA] = (byte) 0xCC;
        ASCII2EBCDIC[0xEB] = (byte) 0xCD;
        ASCII2EBCDIC[0xEC] = (byte) 0xCE;
        ASCII2EBCDIC[0xED] = (byte) 0xCF;
        ASCII2EBCDIC[0xEE] = (byte) 0xDA;
        ASCII2EBCDIC[0xEF] = (byte) 0xDB;
        ASCII2EBCDIC[0xF0] = (byte) 0xDC;
        ASCII2EBCDIC[0xF1] = (byte) 0xDD;
        ASCII2EBCDIC[0xF2] = (byte) 0xDE;
        ASCII2EBCDIC[0xF3] = (byte) 0xDF;
        ASCII2EBCDIC[0xF4] = (byte) 0xEA;
        ASCII2EBCDIC[0xF5] = (byte) 0xEB;
        ASCII2EBCDIC[0xF6] = (byte) 0xEC;
        ASCII2EBCDIC[0xF7] = (byte) 0xED;
        ASCII2EBCDIC[0xF8] = (byte) 0xEE;
        ASCII2EBCDIC[0xF9] = (byte) 0xEF;
        ASCII2EBCDIC[0xFA] = (byte) 0xFA;
        ASCII2EBCDIC[0xFB] = (byte) 0xFB;
        ASCII2EBCDIC[0xFC] = (byte) 0xFC;
        ASCII2EBCDIC[0xFD] = (byte) 0xFD;
        ASCII2EBCDIC[0xFE] = (byte) 0xFE;
        ASCII2EBCDIC[0xFF] = (byte) 0xFF;
    }

    private static byte convertByteA2E(byte in) {
        return ASCII2EBCDIC[in & 0xFF];
    }

    public static byte[] convertStringToEBCDIC(byte[] in) {
        if (in != null) {
            byte[] out = new byte[in.length];
            for (int i = 0; i < in.length; ++i) {
                out[i] = convertByteA2E(in[i]);
            }
            return out;
        }
        return null;
    }
    
    public static void main(String[] args) throws Exception {
        byte[] result = convertStringToEBCDIC("baculsoft".getBytes());
        
        System.out.println(new String(result)); // original result
        System.out.println(new String(result, "Cp1047")); // convert into readable string        
    }
}

This is the result on my Netbean’s IDE console.

Bagaimana Membuat Autostart Aplikasi Java

Barusan kawan gw, Benni Purwonegoro SKom, sharing tentang masalah yang dia temukan serta bagaimana cara workaround-nya. Inti masalahnya sebenarnya sederhana, kebetulan beliau punya server (Windows Server) yang diinstall aplikasi java (web-based). Namun karena servernya sering restart, aplikasi java-nya juga jadi sering down. Oleh sebab itu dicari cara supaya aplikasi java yang diinstall menjadi aplikasi startup yang autorun otomatis setiap server dinyalakan.

Awalnya gw mengajukan supaya dibuat shortcut dari .bat yang kemudian ditaro dibawah folder startup, workaround lainnya adalah dengan Apache Procrun. Namun workaround dari beliau ternyata lebih simple dan efektif, hanya melakukan sedikit modifikasi regedit.

Berikut adalah petunjuk daari beliau

  1. Buat .bat file yang akan mengeksekusi aplikasi java.
  2. Buat new string value di key HKEY_LOCAL_MACHINE\ SOFTWARE\ Microsoft\ Windows\ CurrentVersion\Run
  3. Kemudian masukkan path file .bat yang baru dicreate sebagai value
  4. Langsung tes dan berdoa

Wow gan, workaround ente manjur sekali (H)