當前位置:首頁 » 編程語言 » javainvoke方法說明

javainvoke方法說明

發布時間: 2022-08-01 20:54:25

java invoke 以及 webservice詳解,求助

1、invoke()一般是java反射里的方法。

1、給外界提供的都是介面
定義一個介面,然後給這個介面定義一個實現類。
2、在src目錄下新建一個META-INF文件夾,在這個文件夾下新建一個xfire文件夾,在這個文件夾下再新建一個service.xml文件。
文件內容配置例子:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xfire.codehaus.org/config/1.0">

<service>
<name>CalculatorService</name><!--介面的名字-->
<serviceClass>com.hhaip.service.CalculatorService</serviceClass><!--定義的那個介面-->
<implementationClass>
com.hhaip.service.impl.CalculatorServiceImpl <!--介面的實現-->
</implementationClass>
</service>
</beans>
3、在web.xml中將服務公布出去
<!-- 將服務公布出去 -->
<servlet>
<servlet-name>XFireServlet</servlet-name>
<display-name>XFire Servlet</display-name>
<servlet-class>
org.codehaus.xfire.transport.http.XFireConfigurableServlet
</servlet-class>
</servlet>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/servlet/XFireServlet/*</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>XFireServlet</servlet-name>
<url-pattern>/services/*</url-pattern>
</servlet-mapping>

---------------------------------------------以上就是服務端信息-------------------------------------------------

---------------------------------------------以下就是客戶端信息-------------------------------------------------

1、客戶端使用Ant自動建站工具幫我生成好訪問Web介面所需要的信息。
2、Ant自動生成好客戶端代碼後,只需要新建一個測試類測試。

Ant配置例子:
build.xml
<?xml version="1.0" encoding="UTF-8"?>
<project name="WebService" basedir="." default="webservice">

<property file="build.properties" />

<path id="project-classpath">
<fileset dir="${lib.dir}">
<include name="**/*.jar" />
</fileset>
</path>

<target name="webservice">
<taskdef name="wsgen" classname="org.codehaus.xfire.gen.WsGenTask"
classpathref="project-classpath" />
<wsgen outputDirectory="${scr.dir}" wsdl="${wsdl.dir}" package="com.hhaip.client" overwrite="true"/>
</target>

</project>
build.properties
scr.dir=${basedir}/src
lib.dir=E:/jar/xfire-1.2.6/lib
wsdl.dir=http://localhost:8888/myxfire/services/CalculatorService?wsdl
--> wsdl.dir這個路徑配置最重要。

測試類代碼:
public class TestService {

public static void main(String[] args) {

CalculatorServiceClient client = new CalculatorServiceClient();
//CalculatorServiceClient是Ant生成的客戶端代碼

CalculatorServicePortType portType = client.getCalculatorServiceHttpPort();
//獲取介面

int addResult = portType.add(1, 3);
System.out.println(addResult);
}

⑵ java中 invoke()如何傳實體進去

你問的是Method類的invoke方法吧
這個方法的定義是:invoke(Object obj,Object...args)
第一個參數為類的實例,第二個參數為相應函數中的參數
你的問題里說如何傳實體進去,很簡單,你定義的方法只要寫了接收參數(數量無所謂),那麼直接(弄成數組)傳進去就是了。
以下是一個例子:
public class Test
{
public void print(String string)
{
System.out.println("print(String string)");
System.out.println(string);
}

public void print(String ... strings)
{
System.out.println("print(String ... string)");

for(String string: strings)
System.out.println(string);
}

public static void main(String[] args) throws Exception
{
Test test = new Test();

// 調用 print(String string)
Method method1 = test.getClass().getMethod("print", String.class);
method1.invoke(test, "a");

// 調用 print(String ... strings)
Method method2 = test.getClass().getMethod("print", Array.newInstance(String.class, 0).getClass());
method2.invoke(test, new String[][]{new String[]{"a", "b"}});
}

}

⑶ Java反射invoke怎麼用

Java反射中invoke的用法,我給你個例子,你看看吧(每一句都有注釋)

import java.lang.reflect.Method;

import java.lang.reflect.Constructor;

public class S{

public void test(){

System.out.println("test");

}

public static void main(String[] args) throws Exception {

//獲取S類

Class clzz = Class.forName("S");

//獲取S類默認無參構造方法

Constructor con = clzz.getDeclaredConstructor();

//創建一個S類實例對象

S s =(S)con.newInstance();

//獲取S類的公有成員方法test

Method m=clzz.getDeclaredMethod("test");

//調用S類對象s中的公有成員方法test

m.invoke(s);

}

}

⑷ java getMethod方法和invoke方法(看代碼)

不糾結過多的細節的話,等價。
「巧婦難為無米之炊」在這句話說明了java里大多數方法調用的必要內容:
巧婦(誰)、為炊(干很么)、米(幹活的原材料,非必需)
1、a.getName()
知道「巧婦(a)」,知道「為炊(getName)」
總結:【「巧婦」做「為炊」這件事】

2、a.getClass().getMethod("getName").invoke(a.getClass().newInstance())
1)a.getClass().getMethod("getName")
「為炊(getName)」的另一個說法
2)a.getClass().newInstance()
有「為炊」沒用,還得找個「巧婦」,這句就是干這個的
3)invoke
牽個線
總結:【「為炊」這件事「invoke」幫你找個「巧婦」來做】

不要糾結,既然你還困惑這兩個的差異,那就說明你還沒到需要了解的時候。

⑸ java反射中method類中的invoke方法是做什麼的,他有什麼作用

首先Method類代表一個方法,所以invoke(調用)就是調用Method類代表的方法。它可以讓你實現動態調用,例如你可以動態的傳人參數。下面是一個簡單的例子。

publicclassMethodTest
{
publicstaticvoidmain(String[]args)
{
String[]names={"tom","tim","allen","alice"};
Class<?>clazz=Test.class;
try
{
Methodmethod=clazz.getMethod("sayHi",String.class);
for(Stringname:names)
method.invoke(clazz.newInstance(),name);
}catch(NoSuchMethodExceptione)
{
e.printStackTrace();
}catch(IllegalAccessExceptione)
{
e.printStackTrace();
}catch(IllegalArgumentExceptione)
{
e.printStackTrace();
}catch(InvocationTargetExceptione)
{
e.printStackTrace();
}catch(InstantiationExceptione)
{
e.printStackTrace();
}
}
}
classTest
{
publicvoidsayHi(Stringname)
{
System.out.println("Hi"+name);
}
}
熱點內容
數值最優化演算法與理論 發布:2025-03-10 19:09:45 瀏覽:313
p30伺服器怎麼樣 發布:2025-03-10 19:01:36 瀏覽:4
四州志是由誰編譯的 發布:2025-03-10 19:01:33 瀏覽:213
java模 發布:2025-03-10 19:00:42 瀏覽:121
資料庫查不到數據 發布:2025-03-10 18:52:16 瀏覽:482
php碼農 發布:2025-03-10 18:45:45 瀏覽:791
centos7編譯安裝php 發布:2025-03-10 18:32:48 瀏覽:493
電腦上什麼安卓模擬器 發布:2025-03-10 18:32:47 瀏覽:21
公司ftp傳輸文件 發布:2025-03-10 18:24:54 瀏覽:387
aspsql注入過濾 發布:2025-03-10 18:19:37 瀏覽:464