Friday, June 22, 2007

Weblogic-Eclipse Türkçe Karakter Sorunu

Bütün gün benim için sorun olan Web sayfalarındaki Türkçe karakter problemimi şirkette çalışan arkadaşımın yardımıyla çözmüş bulunuyorum :).

Bunun için bu sorunla karşılaşılanlar için adım-adım yapılması gerekenler:

1. Eclipse'i çalıştıran shortcut target kısmınını sonuna " -Dfile.encoding=iso-8859-9" eklenir
2. Eclipse restart edilir.
3. Window->Preferences->Weblogic altında tanımlı olan weblogic "Edit" edilir. Runtime tabının altındaki VM Arguments kısmına "-Dfile.encoding=iso-8859-9" eklenir
4. Window->Preferences->General->Content Types Text->JSP seçilir ve Default Encoding "iso-8859-9" Text->Java Source File seçilir ve Default Encoding "iso-8859-9" yapılır.
5. JSP sayfasının başına
<%@ page contentType="text/html;charset=iso-8859-9"%>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-9">
satırları eklenir. Eğer dekoratör kullanılıyorsa bu satırlar dekoratöre eklenir.
Ama <%@ page contentType="text/html;charset=iso-8859-9"%> satırının bütün jsplere eklenmesi gerekir.

Sonunda bu işlemleri yapınca ve "karşılaşıldı" kelimesini sayfada görünce yaşanan mutluluk ile çekilen bütün yorgunluklar unutulur :).

Thursday, June 21, 2007

Spring ile Remote Ejb erişimi

Daha önceden yazdığım ejblerin business interface'lerine doğrudan erişmemizi sağlayacak bir bean olup olmadığını araştırdım. Tabi ki bu genel bir ihtiyaç olduğu için spring içinde bunun çözümü varmış. "org.springframework.ejb.access.
SimpleRemoteStatelessSessionProxyFactoryBean" sınıfı ejb erişimi için gerekli bütün esnekliği sağlıyor. Olmasaydı ben de bunun gibi bir bean yazmak zorunda kalacaktım :).

Benim test için yaptığım konfigurasyonda aşağıdaki şekilde ayarladığımda diğer beanlerim business interface'ini doğrudan kullanmaya başlıyor.

<bean id="customerProductQuery"
class="org.springframework.ejb.access.
SimpleRemoteStatelessSessionProxyFactoryBean
"
singleton="true">
<property name="jndiName" value="CustomerProductQueryEJB">
<property name="lookupHomeOnStartup" value="false">
<property name="homeInterface"
value="com.kemal.ejb.CustomerProductQueryHome"/>
<property name="businessInterface" value="com.kemal.ejb.CustomerProductQuery">
<property name="jndiTemplate">
<ref local="weblogicJndiTemplate">
</property>
</bean>

<bean id="weblogicJndiTemplate" class="org.springframework.jndi.JndiTemplate">
<property name="environment">
<props>
<prop key="java.naming.factory.initial">weblogic.jndi.WLInitialContextFactory</prop>
<prop key="java.naming.provider.url">t3://localhost:7999</prop>
<prop key="java.naming.factory.url.pkgs">weblogic.jndi.factories</prop> </props>
</property>
</bean>

Tuesday, June 19, 2007

Struts ve Spring MVC kullanımı

Struts ilk MVC framework'ü olduğu için yaygın bir şekilde kullanılıyor. Şimdi Struts 2 eksik yönlerine göre yazılmış olan webwork2 ile yeniden gündeme geldi.

Apache Struts 2 requires:
  • Servlet API 2.4
  • JSP API 2.0
  • Java 5
Dependency olarak yüksek bir kabul yapmış bizim için.

Spring MVC'de struts'daki eksiklikleri görerek geliştirilmiş. Bu konuda güzel bir makale okudum.

12 BENEFITS of Spring MVC over Struts

Sonuçta struts 2 ile spring mvc arasında bir seçim yapmak gerekiyor. Bence application katmanndada spring kullanılacağına göre presentation katmanında da spring mvc kullanımı mimarinin bütünlüğü ve geliştirme kolaylığı açısından bize rahatlık sağlayacaktır. Ayrıca struts 2 yeni bir framework olduğu için gerekli dokümantasyon konusunda da bir eksikliği var.

Struts 2 ve spring mvc konusunda spring forumunda güzel bir thread'de buldum.

Spring MVC vs. Struts 2 (WebWork 2)

Monday, June 18, 2007

Spring-weblogic entegrasyonu (devam)

Geçen gün karşılaştığım "ClasscastException"'ın asıl kaynağının "org.springframework.remoting.rmi.JndiRmiClientInterceptor" sınıfındaki
stub = PortableRemoteObject.narrow(stub, getServiceInterface());
satırı olduğunu gördüm. Benim konfigurasyonumda ejb'nin service sınıfı cast edilecek şekilde ayarlı olduğu için ClassCastException alıyormuşum.
<property name="serviceInterface" value="com.kemal.ejb.CustomerProductQuery"/>
Çünkü ejb lookup sırasında home sınıfını dönüyormuş. Konfigurasyonu aşağıdaki şekilde değiştirince sorun çözülmüş oldu.
<property name="serviceInterface" value="com.kemal.ejb.CustomerProductQueryHome">
Sonuçta weblogic spring entegrasyonu konusu halledilmiş oldu, fakat bu seferde servislerin içinde
CustomerProductQuery customerProductQuery = customerProductQueryHome.create();
şeklinde kullanmak gerekiyor. Bunun engellemenin bir yolu var mı bilmiyorum.

Saturday, June 16, 2007

Spring ve Weblogic entegrasyonu

Weblogic yeni öğrenmeye başladığım bir application server. Spring'i weblogic üzerinde ayağa kaldırmak sorun değil fakat weblogic üzerinde geliştirilmiş ejb'lerin spring tarafında kullanılabilmesi sorun olacağa benziyor.

Bu konuda güzel bir doküman buldum. Spring tarafında remote bean'lere ulaşmak için "org.springframework.remoting.rmi.JndiRmiProxyFactoryBean" proxy sınıfı yazılmış. Bu sınıf gerekli parametreleri ile verdiğinizde bağlanıp kullanabileceğini söylüyor.

Bean konfigurasyonu yaptığımda gerçekten bağlanmaya çalışıyor. Fakat "ClassCastException" alıyor.
Aldığı bu hata konusunda biraz daha araştırma yapmam gerekecek.

Bu dokümanda ayrıca distributed-transaction,console support for spring beans,web services enablement,jmx konularında weblogic'e özel spring konfigurasyonlarının nasıl yapıldığından da bahsediyor.

Spring 1.2.x Integration with WebLogic Server


Kemal.

Teknolojik günlüğe başlarken

Merhaba,

Her gün teknolojik işler ile uğraşırken karşılaştığımız sorunları bir yerlere kaydetmediğimiz için daha sonra hem kendimiz hem de başkaları bu bilgilerden fayadalanamıyor.

Bu konuda genelde yurtdışındaki sitelerde insanların bu işi alışkanlık haline getirdiğini görüyoruz. Bugüne kadar bu bilgilerde çok yararlandım ve bir çok sorunumu çözdüm.

Ben de bundan sonra elimden geldiğince işimi yaparken karşılaştığım sorunlara bulduğum çözümleri ve çeşitli kaynaklardan edindiğim bilgileri burdan paylaşmaya çalışacağım.

Bu işin alışkanlık haline gelmesini istiyorum.