Tuesday, April 8, 2014

Java EE7 прожект (Нэг олон холбоос DropBox гаргах асуудал)

Өгөгдлийн санд бүртгэхийн тулд хөрвүүлэх классыг үүсгэж өгөх шаардлагатай байдаг юм байна. Жишээ нь нэг сурагчийн ямар ангид сурдаг болохыг DropBox оос сонгуулж бүртгэхэд enterprise bean дээр асуудал гардаг. Энэ тохиолдолд нэг олон холбоос харгалзан анги сурагч болно. Ихэвчлэн parameter хүснэгтийн утгуудаас сонгож бүртгэл хөтлөхөд тулгардаг асуудал юм.

Манай тохиолдолд SelectOne буюу DropBox бүхий талбарыг өгөгдлийн сангаас уншиж бүрдүүлсэн бөгөөд бүртгэхэд харагдах мэдээллийг хөрвүүлэх шаардлагатай юм байна. Ингэхийн тулд өгөгдлийн сангаас харуулах сонголтын хэсэг тус бүрт java Converter хэрэгжүүлэх классыг үүсгэнэ. Session bean үүсгэсэн тохиолдолд дараах байдалтай байна.

//энэхүү нэрийг ашиглан face буюу page дээр ашиглах боломжтой
@FacesConverter(value="converterName")
public class PositionDegreeConverter implements Converter {

    @EJB
    private yourEntityFacadeLocal yourFacade;
    
    @Override
    public Object getAsObject(FacesContext context, UIComponent component, String value){
        try{
              //хөрвүүлэх төрлөөс хамаарч Integer юм уу String байж болно
            Object result = yourfacade.find(new Integer(value));
            return result;
        }
        
        catch(Exception ex){
            System.out.println(ex.toString());
        }
        return null;
    }
    @Override
    public String getAsString(FacesContext context, UIComponent component, Object value){
        try{
            yourEntityBean ybean = (yourEntityBean) value;
            return String.valueOf(ybean.getYourBeanMethodId());
        }
        catch(Exception ex){
            System.out.println(ex.getMessage());
        }
        return null;
    }
}

Үүнийг selectOne буюу dropbox ийн тагт дараах байдалтай оруулна.


  
                          
                         
                        
 

Friday, April 4, 2014

Glassfish сервер болон UTF 8 encode

Тэгэхээр глассфиш серверийн үндсэн encode нь ISO-8859-1 байдгийг мэдсэн биз ээ. Oracle GlassFish Server 3.0.1 Application Development Guide. Тэгвэл ихэнх хөгжүүлэгчид ялангуяа монгол хөгжүүлэгчид үргэлж UTF-8 encode ашиглах шаардлага гардаг.

Шийдэх арга нь: Серверийн тодорхойлогч буюу descriptor файлыг үүсгэх хэрэгтэй. Жишээ нь Netbeans 8 IDE дээр прожектдоо шинэ файл New -> Other -> Glassfish -> Glassfish descriptor үүсгэнэ. sun-web.xml юм уу glassfish-web.xml үүсэх ёстой ба XML edit хэсэгт parameter-encoding таг нэмэхэд хангалттай.

Дараах байдалтай харагдана

  
   
   
    
    
     
    Keep a copy of the generated servlet class' java code.  
     
    
    
    
  

Wednesday, April 2, 2014

JDBC glassfish

Өнөөдөр хуучин Netbeans 7,2 дээрх Java EE6 прожектоо Java EE7 болголоо. Өмнө нь ажиллаж байсан сервер glassfish 3.1.2 т Connection pool болон JDBC Resource ийг автоматаар үүсгэж байсан бол дараагийн хувилбар болох glassfish 4 open source edition д тийм боломж байдаггүй бололтой. Ямартай ч миний тохиолдолд. Ингээд Connection пүүл болон JNDI гаа Admin хэсгээс үүсгэх боллоо. Хамгийн гол асуудал нь org.postgresql.ds.PGSimpleDataSource классыг танихгүй Ping хийж чадахгүй байсан юм. Интернэтэд энэ асуудалтай холбоотой олон асуулт бас шийдэх олон аргууд байдаг юм байна. Харин хамгийн хялбар арга нь тухайн сангийнхаа JDBC driver ийг хуулж тавих юм. Жишээ нь PostgreSQL ашиглаж байгаа бол http://jdbc.postgresql.org/download.html энэ хаягаас сангаа авч болохнээ. Эсвэл jdbc.jar ийг өөрийнхөө Глассфиш ийн хавтсанд хуулж болох юм байна. Гэхдээ яг хэрэглэж буй өгөгдлийн сангийнхаа холболтын driver аа сонгохыг зөвлөж байна