當前位置:首頁 » 編程語言 » 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);
}
}
熱點內容
伺服器essd什麼意思 發布:2025-01-23 14:51:24 瀏覽:268
spring上傳文件限制 發布:2025-01-23 14:50:30 瀏覽:310
奇亞幣p圖軟體存儲機 發布:2025-01-23 14:38:03 瀏覽:43
linux有用的命令 發布:2025-01-23 14:35:03 瀏覽:681
php顯示縮略圖 發布:2025-01-23 14:22:17 瀏覽:725
安卓哈利波特怎麼更換賬號 發布:2025-01-23 14:16:44 瀏覽:586
中國壓縮包 發布:2025-01-23 14:10:49 瀏覽:499
如果讓電腦訪問到公司伺服器 發布:2025-01-23 14:02:46 瀏覽:686
360瀏覽器腳本 發布:2025-01-23 13:54:42 瀏覽:565
合拍率演算法 發布:2025-01-23 13:50:59 瀏覽:257