Monday, December 1, 2008

maven: working with manifests (MANIFEST.MF)

mในกรณีการทำ excution jar จะต้องมีการกำหนด main-class ,classpath ใน /META-INF/MANIFEST.MF
เพื่อให้สามารถรันได้ maven จะช่วยให้ง่ายขึ้น
ตัวอย่าง แก้ไขไฟล์ pom.xml โดยเพิ่ม plugin ดังนี้
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<configuration>
<archive>
<manifest>
<mainClass>com.gosoft.app.App</mainClass>
<packageName>com.gosoft.app</packageName>
<addClasspath>true</addClasspath>
<addExtensions />
<classpathPrefix>lib/</classpathPrefix>
</manifest>
<manifestEntries>
<mode>development</mode>
<url>ddddd</url>
</manifestEntries>
</archive>
</configuration>
</plugin>

maven: copy libraries to classpath

การเพิ่มคำสั่งให้ maven copy library ที่ dependencies ไปยัง target path ที่ทำการ package .jar ของเราเอาไว้
ตัวอย่าง แ้ก้ไขที่ pom.xml เพิ่ม plug-in ที่ช่วย copy library ไปยัง targetpath
.......
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib</outputDirectory>
<overWriteReleases>false</overWriteReleases>
<overWriteSnapshots>false</overWriteSnapshots>
<overWriteIfNever>true</overWriteIfNever>
</configuration>
</execution>
</executions>
</plugin>
.......

Tuesday, November 11, 2008

use flex Object like java.util.Map

it, easiest

private var myobject:Object = new Object();
myobject["A"] = "Hello";
myobject["B"] = "World";
myobject["C"] = "foobar";

//trace object
trace(myobject["A"]);
trace(myobject["B"]);
trance(myobject["C"]);

//result
// "Hello World foobar"


End. let try..


Friday, October 17, 2008

flex's multiple module

flash player 9.XXXX.

private function currentMod(uri:String):void{
childMod.url = null;
childMod.url = uri;
childMod.addEventListener(ModuleEvent.ERROR,onLoadError);
}

when i load unload ..... and load unload on multiple module I found this Error

TypeError: Error #1034: Type Coercion failed: cannot convert mx.graphics::Stroke@4b336d1 to mx.graphics.IStroke.
at mx.charts::AxisRenderer/measure()[C:\Work\flex\dmv_automation\projects\datavisualisation\src\mx\charts\AxisRenderer.as:1091]
at mx.core::UIComponent/measureSizes()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5819]
at mx.core::UIComponent/validateSize()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:5765]
at mx.managers::LayoutManager/validateSize()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:559]
at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:648]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at mx.core::UIComponent/callLaterDispatcher2()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8460]
at mx.core::UIComponent/callLaterDispatcher()[E:\dev\3.0.x\frameworks\projects\framework\src\mx\core\UIComponent.as:8403]

with this code I'm found problem
<mx:ModuleLoader id="childMod"></mx:ModuleLoader>

after that , i try this code
<mx:ModuleLoader id="childMod" applicationDomain="{ApplicationDomain.currentDomain}" ></mx:ModuleLoader>


and i can fix that problem Hulaaaaaaaa ^^

Monday, October 13, 2008

CrystalReport pass value to parameter field [C#]

1. create crystalReport1.rpt and add Parameter Field eg. [?INPUT]
2. coding like this

//first create value
ParameterValues currentParameterValues = new ParameterValues();
ParameterDiscreteValue parameterDiscreteValue = new ParameterDiscreteValue();
parameterDiscreteValue.Value = 5;
currentParameterValues.Add(paramDiscreteValue);

//set report DataDefinition
crystalReport1 reportDoc = new crystalReport1();
reportDoc.DataDefinition.ParameterFields["INPUT"].ApplyCurrentValues(currentParameterValues);

//set report to CrystalReportViewer
this.crystalReportViewer1.ReportSource = report;


then crystalreportview run without 'Enter param value' Dialog.
I used 10 hour for this solution T-T

Tuesday, July 29, 2008

Simple MVC example


Models = pojo
create class models.BeerExpert

public class BeerExpert {
public List getBrands(String color){
List brands = new ArrayList();
if(color.equals("amber")){
brands.add("Jack Amber");
brands.add("Red Moose");
}
else {
brands.add("Jail Pale Ale");
brands.add("Gout Stout");
}
return(brands);
}
}


Views = jsp
[First path] this is first page see when run. create index.jsp like this.

<html>
<head>
<title>JSP Page</title>
</head>
<body>
<form action="BeerExpertServlet.do">
<select name="color" size="1">
<option>light
<option>amber
<option>brown
<option>dark
</select>
<center>
<input type="submit">
</center>
</form>
</body>
</html>


[Second Path] show result foward from controls. create beerexpertresult.jsp

<html>
<head>
<title>JSP Page</title>
</head>
<body>
<h1>Beer Recommedations JSP</h1>
<%
java.util.List styles = (java.util.List)request.getAttribute("styles");
java.util.Iterator it = styles.iterator();
while(it.hasNext()){
out.println("<br>try:"+it.next());
}
%>
</body>
</html>



Controls = servlet
create class controls.BeerExpertServlet

public class BeerExpertServlet extends HttpServlet {

/**
* Processes requests for both HTTP GET and POST methods.
* @param request servlet request
* @param response servlet response
*/
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
try {
String c = request.getParameter("color");
BeerExpert be = new BeerExpert();
List result = be.getBrands(c);

request.setAttribute("styles", result);
RequestDispatcher view =
request.getRequestDispatcher("beerexpertresult.jsp");
view.forward(request, response);

} finally {
out.close();
}
}

//
/**
* Handles the HTTP GET method.
* @param request servlet request
* @param response servlet response
*/
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}

/**
* Handles the HTTP POST method.
* @param request servlet request
* @param response servlet response
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
processRequest(request, response);
}
}


and you must edit web.xml like this



<?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>BeerExpertServlet</servlet-name>
<servlet-class>controls.BeerExpertServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>BeerExpertServlet</servlet-name>
<url-pattern>/BeerExpertServlet.do</url-pattern>
</servlet-mapping>

<session-config>
<session-timeout>
30
</session-timeout>
</session-config>
<welcome-file-list>
<welcome-file>login.jsp</welcome-file>
</welcome-file-list>
</web-app>



step just like this index.jsp(view)->BeerExpertServlet.java(controls)->beerexpertresult.jsp(view)

Thursday, June 5, 2008

Deploy BlazeDS on Sun Java System Application Server

Add this line to your server.policy
["C:\Sun\AppServer\domains\domain1\config\server.policy"]


grant {
permission java.lang.RuntimePermission "modifyThread";
permission javax.management.MBeanServerPermission "createMBeanServer";
permission javax.management.MBeanPermission "*", "*";
};


and you can depoy blazeds.war and use it. Let fun

Monday, June 2, 2008

simple java.util.Properties

#myconfig.properties
myname = jook
surname = kajook


////////////////////////
//
public class main {
public static void main(String[] args) throws Exception {
Properties p = new Properties();
p.load(new FileInputStream(new File("myconfig.properties")));
String result = "";
result = p.getProperty("myname");
System.out.println("my name is : "+result);
result = p.getProperty("surname");
System.out.println("my surname is: "+result);
}

}

////
result::::
my name is : jook
my surname is : kajook

Sunday, May 11, 2008

การ set Proxy

โดยสามารถ แทรกเข้าไปใน code ได้เลย

1. กรณีเป็น https
Properties systemProperties = System.getProperties();
systemProperties.setProperty("https.proxyHost","111.111.2.60");
systemProperties.setProperty("https.proxyPort","9090");

2. กรณีเป็น http
Properties systemProperties = System.getProperties();
systemProperties.setProperty("http.proxyHost","111.111.2.60");
systemProperties.setProperty("http.proxyPort","9090");

Thursday, May 8, 2008

Sun Application Server Command Line

eg. list
> asadmin list --user admin server*
eg. Instance = demo1
>asadmin list --user admin demo1*
eg. deep search
>asadmin list --user admin --port 4848 -m server.http-service.*
eg. get parameter
>asadmin get --user admin --port 4848 -m server.http-service.keep-alive.*
eg.monitoring jdbc-connection-pool
>asadmin get --monitor=true instance1.resources.sevenonl.numconn*-count

Friday, March 14, 2008

Send SOAP with Attachment use SAAJ


import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.soap.AttachmentPart;
import javax.xml.soap.MessageFactory;
import javax.xml.soap.Name;
import javax.xml.soap.SOAPBody;
import javax.xml.soap.SOAPBodyElement;
import javax.xml.soap.SOAPConnection;
import javax.xml.soap.SOAPConnectionFactory;
import javax.xml.soap.SOAPElement;
import javax.xml.soap.SOAPEnvelope;
import javax.xml.soap.SOAPException;
import javax.xml.soap.SOAPFactory;
import javax.xml.soap.SOAPHeader;
import javax.xml.soap.SOAPMessage;
import javax.xml.soap.SOAPPart;


public class run {

/**
* @param args
* @throws SOAPException
* @throws MalformedURLException
* @throws UnsupportedOperationException
*/
public static void main(String[] args)
throws UnsupportedOperationException
, MalformedURLException, SOAPException {
run c = new run();
c.run();

}
public void run()
throws UnsupportedOperationException
, SOAPException
, MalformedURLException{
SOAPConnectionFactory factory =
SOAPConnectionFactory.newInstance();
SOAPConnection connection = factory.createConnection();

/// create request
SOAPMessage request = getSOAP();

java.net.URL endpoint =
new URL("http://localhost:9090/gizmo/orger");
SOAPMessage response = connection.call(request, endpoint);
}
private SOAPMessage getSOAP() throws SOAPException {
MessageFactory factory = MessageFactory.newInstance();
SOAPMessage message = factory.createMessage();
SOAPPart soapPart = message.getSOAPPart();
SOAPEnvelope envelope = soapPart.getEnvelope();
SOAPHeader header = envelope.getHeader();
SOAPBody body = envelope.getBody();

SOAPFactory soapFactory = SOAPFactory.newInstance();
Name bodyName =soapFactory.createName(
"GetLastTradePrice","m","http://wombat.ztrade.com");
SOAPBodyElement bodyElement = body.addBodyElement(bodyName);

Name name = soapFactory.createName("symbol");
SOAPElement symbol = bodyElement.addChildElement(name);
symbol.addTextNode("SUNW");

//Attachment path
AttachmentPart attachment = message.createAttachmentPart();
String stringContent = "Kajook online";
attachment.setContent(stringContent, "text/plain");
attachment.setContentId("update_address");
message.addAttachmentPart(attachment);

return message;
}

}