スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[.NEF Framework] コンボボックスのWinProcイベントを捕捉する


class myComboBox : System.Windows.Forms.ComboBox
{
private struct ComboBoxInfo
{
public int Size;
public Rectangle RectItem;
public Rectangle RectButton;
public int ButtonState;
public IntPtr ComboBoxHandle;
public IntPtr EditBoxHandle;
public IntPtr ListBoxHandle;
}

private class myEditBox : System.Windows.Forms.NativeWindow
{
public myEditBox(ComboBox parentComboBox)
{
parentComboBox.HandleDestroyed += new EventHandler(this.OnHandleDestroyed);
}

private void OnHandleDestroyed(object sender, EventArgs e)
{
this.ReleaseHandle();
}

protected override void WndProc(ref Message m)
{
const int WM_PASTE = 0x0302;// ペーストの時

if (m.Msg == WM_PASTE)
{
MessageBox.Show("ペースト");
return;
}

base.WndProc(ref m);
}
}

protected override void OnHandleCreated(EventArgs e)
{
base.OnHandleCreated(e);

ComboBoxInfo tComboBoxInfo = new ComboBoxInfo();
tComboBoxInfo.Size = System.Runtime.InteropServices.Marshal.SizeOf(tComboBoxInfo);

if (!GetComboBoxInfo(this.Handle, ref tComboBoxInfo)) return;

if(tComboBoxInfo.EditBoxHandle.Equals(IntPtr.Zero)) return;

myEditBox hEditBox = new myEditBox(this);
hEditBox.AssignHandle(tComboBoxInfo.EditBoxHandle);
}

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern bool GetComboBoxInfo(IntPtr comboBoxHandle, ref ComboBoxInfo pComboBoxInfo);
}
スポンサーサイト

[Java] Eclipse + Axis2 でSOAPクライアントを作成(・ω・)

前回に引き続きまたまたAxis2です(・ω・)
今回は前回デプロイしたWebサービスにアクセスするクライアントを作成してみます。

まず、Axis2でWSDLからスタブクラスを作成します。
前々回にAxis2を展開したフォルダの中にあるbin/wsdl2java.batを使用します。
コマンドプロンプト(XPの場合)で以下のように入力します。

>[~Axis2を展開したフォルダ]\bin\wsdl2java.bat -uri [wsdlのアドレス]
例:>C:\axis2\bin\wsdl2java.bat -uri http://localhost:8080/axis2/services/MyService?wsdl

実行後、カレントフォルダに「src」というフォルダが生成されます。
その中に [サービス名]CallbackHandler.java[サービス名]Stub.java というJavaファイルがあるハズです。
例:「MyServiceCallbackHandler.java」「MyServiceStub.java」

この2つのファイルを適当なプロジェクトに突っ込み、以下のようなソースを書きます。

package com.morado106;

public class MyClient {

public static void main(String[] args)
{
try
{
// スタブを生成
MyServiceStub stub =
new MyServiceStub("http://localhost:8080/axis2/services/MyService/");

// パラメータの設定
MyServiceStub.GetMyItem item = new MyServiceStub.GetMyItem();
item.setId(3);

// 結果を取得
MyServiceStub.GetMyItemResponse response = stub.getMyItem(item);
MyServiceStub.MyItemBean bean = response.get_return();

// 結果を表示
System.out.println(bean.getName());
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
}

実行して成功すれば結果がコンソールに表示されるハズです(・ω・)

[Java] Eclipse + Axis2 でWebサービスをデプロイ(・ω・)

前回に引き続きAxis2です。
今回は前回作成したWebサービスをTomcatにうpして動作確認をしてみます。

まず、鯖にデプロイするAARファイルを作成します。
AARファイルはEclipseのプラグインを使うと大変簡単に作る事ができます。
ってコトで以下からAxis2のEclipseプラグインをダウンロード。

http://ftp.riken.jp/net/apache/ws/axis2/tools/1_4_1/
※追記[2012/01/24]
上記リンク切れてました(;´Д`)↓新しいURLです
http://archive.apache.org/dist/ws/axis2/tools/1_4/

axis2-eclipse-service-archiver-wizard.zip(Service Archive Wizard - Eclipse Plug-in)
axis2-eclipse-codegen-wizard.zip(Code Generator Wizard - Eclipse Plug-in)
をダウソ⇒解凍したら、解凍したフォルダのまんまEclipseのpluginsフォルダに突っ込みます。

その後Eclipseを起動し、前回のプロジェクトから「新規」を選ぶと、
「Axis2 Service Archiver」が選択できるようになっています。



「Axis2 Service Archiver」を選択し、図のように進めていくとAARファイルが作成されます。




Axis2のwarファイルをゲトして、TOMCAT_HOMEのwebappsフォルダに突っ込みます。
※axis2-1.4.1-war.zipを解凍した中にある「axis2.war」です。

http://ws.apache.org/axis2/download/1_4_1/download.cgi

Tomcatを起動し、http://localhost:8080/axis2/にアクセスすると、
図のようにAxis2の画面が表示されると思います。
管理画面にアクセスし(何もしてなければ「admin」「axis2」でログインできます)
先程作成したAARファイルをデプロイします。


正常にデプロイできたら、以下のアドレスにアクセスして動作確認します。
http://localhost:8080/axis2/services/MyService?wsdl
http://localhost:8080/axis2/services/MyService/getMyItem?id=3

応答結果

[Java] Eclipse + Axis2 でWebサービスを作ってみる(・ω・)

久々の更新です(・ω・)
会社でWebサービスを使った仕事をするにあたり、自分でも試しにWebサービスを作ってみました。
前にApacheSOAPを使ったときは色々面倒だったのですが、
Axis2を使うととても簡単にWebサービスを作る事ができます。

【調理環境】
JDK 1.6(1.5でもおk)←最近ダウソしたらオラクルになっててビックリしたww
Tomcat 5.5
Eclipse(GALILEO)

まず「Apache Axis2」をダウンロードします。
バージョンは1.4.1を。1.5だとEclipseが対応してないようで何故か失敗(;´Д`)
(最近出たっぽいヘリオスだったらイケるのかもしれないが)

http://ws.apache.org/axis2/download/1_4_1/download.cgi

とりあえず、
axis2-1.4.1-bin.zip
axis2-1.4.1-war.zip

の2つをゲト。axis2-1.4.1-bin.zipだけでも良いのですが、
axis2-1.4.1-war.zipは次回で使いますのでついでにダウソしておきます。

Eclipseを起動し、[ウィンドウ]-[設定]の「Webサービス」でAxis2の設定を行います。
①Axis2ランタイムロケーションを解凍したaxis2-1.4.1-bin.zipのフォルダにする。


②サーバーとランタイムに「Tomcat5.5」と「Axis2」を選択。


続いて「動的Webプロジェクト」で新規作成します。
・プロジェクト名は適当に。
・TargetRuntimeは「Tomcat5.5」を指定。
・プロジェクトファセットの「Axis2 Webサービス」にチェック。


今回、SQLServer2005に接続して値を取得するのも作るので、
SQLJDBC_2.0のjarを[プロジェクト]-[WebContent]-[WEB-INF]-[lib]に突っ込みます。

SQLJDBC_2.0のダウンロード

http://www.microsoft.com/downloads/details.aspx?displaylang=ja&FamilyID=99b21b65-e98f-4a61-b811-19912601fdc9

※Javaのバージョンが1.5の時は、sqljdbc.jarを使用します。
※Javaのバージョンが1.6の時は、sqljdbc4.jarを使用します。


では早速サービスの作成に入ります。
今回、2つのクラスを作成します。


①MyItemBean.java

package com.morado106;

public class MyItemBean {
private int age;
private String name;

public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
}

②MyService.java

package com.morado106;
import java.sql.*;
import com.microsoft.sqlserver.jdbc.SQLServerDataSource;

public class MyService
{
// 普通に文字列を返すだけ
public String HelloAxis2(String name)
{
return "Hello, " + name +"!";
}

// データベースから値を取得
public MyItemBean getMyItem(int id)
{
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
MyItemBean item = new MyItemBean();

try
{
// JDBCドライバをロードする
Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

// 接続の設定
SQLServerDataSource ds = new SQLServerDataSource();
ds.setUser("sa");
ds.setPassword("password");
ds.setServerName("localhost");
ds.setPortNumber(1433);
ds.setDatabaseName("MoradoDB");

// 接続
con = ds.getConnection();

// SQLの実行
pstmt = con.prepareStatement("SELECT * FROM MoradoTabel WHERE ID = " + id);
rs = pstmt.executeQuery();

// 結果の取得
while (rs.next())
{
item.setAge(Integer.parseInt(rs.getString("AGE").toString()));
item.setName(rs.getString("NAME").toString());
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
finally
{
if(rs != null) try { rs.close(); } catch (Exception ex) { }
if(pstmt != null) try { pstmt.close(); } catch (Exception ex) { }
if(con != null) try { con.close(); } catch (Exception ex) { }
}

return item;
}
}

ソースを作り終わったら、「MyService.java」の方を右クリックして、
[Webサービス]-[Webサービスの作成]を選択します。


後は画像のようによしなに(・ω・)


Webサービスの作成とTomcatの起動が終わったら、以下のアドレスにアクセスしてみます。
※URI中のMoradoWSはプロジェクト名、MyServiceがクラス名です。

http://localhost:8080/MoradoWS/services/MyService?wsdl


というふうにWSDL(Webサービスの定義)を参照する事が出来ます。
同じように以下のアドレスにもアクセスしてみます(・ω・)
(赤字の部分=サービスクラスのメソッド名が、そのままSOAPメソッド名になる)

http://localhost:8080/MoradoWS/services/MyService/HelloAxis2?name=morado106

応答結果


Hello, morado106!



http://localhost:8080/MoradoWS/services/MyService/getMyItem?id=2

応答結果



29
田中




次回、作成したサービスのデプロイ方法に逝きまーす(・ω・)

Pagination

Utility

プロフィール

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。