簡體   English   中英

在Eclipse中創建一個簡單的JAX-WS WebService

[英]Creating a Simple JAX-WS WebService in Eclipse

我正在嘗試在eclipse中創建一個簡單的Web服務。 首先,我創建了一個空的java項目,並在src文件夾中添加了以下三個文件

  1. Greeting.java
package com.alfaisaliah;

import javax.jws.WebService;
import javax.jws.WebMethod;

@WebService
public interface Greeting {
    @WebMethod
    String sayHello(String name);
}
  1. GreetingImp.java
package com.alfaisaliah;

import javax.jws.WebService;

@WebService(endpointInterface="com.alfaisaliah.Greeting")
public class GreetingImp implements Greeting {

    @Override
    public String sayHello(String name) {
        return "Hello " + name;
    }
}
  1. WSPublisher
package com.alfaisaliah;

import javax.xml.ws.Endpoint;

public class WSPublisher {
    public static void main(String[] args){
        Endpoint.publish("http://localhost:8081/WS/Greeting", new GreetingImp());
    }
}

我正在遵循的教程沒有指定任何服務器來運行Web服務! 我想知道我是否需要指定任何服務器。 我已經有Tomcat v5.5但是在這個例子中沒有使用它。 每當我將這個項目作為一個java項目運行時,我都會遇到一些錯誤。 任何人都可以幫我確定我的問題是在嘗試運行Web服務。 這是eclipse控制台的輸出

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
INFO: Dynamically creating request wrapper Class com.alfaisaliah.jaxws.SayHello

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
INFO: Dynamically creating response wrapper bean Class com.alfaisaliah.jaxws.SayHelloResponse

此外,當我再次運行該項目時,它表示該地址已被使用

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getRequestWrapperClass
INFO: Dynamically creating request wrapper Class com.alfaisaliah.jaxws.SayHello

Feb 26, 2012 12:01:00 PM com.sun.xml.internal.ws.model.RuntimeModeler getResponseWrapperClass
INFO: Dynamically creating response wrapper bean Class com.alfaisaliah.jaxws.SayHelloResponse
Exception in thread "main" com.sun.xml.internal.ws.server.ServerRtException: Server Runtime Error: java.net.BindException: Address already in use

我很感激你的幫助:)

我正在關注的教程沒有指定任何服務器來運行Web服務! 我想知道我是否需要指定任何服務器。

您不需要具有此代碼的服務器。
你的main在:

Endpoint.publish("http://localhost:8081/WS/Greeting", new GreetingImp());  

啟動一個輕型http服務器(在JKD 1.6之后可用)並部署您的Web服務處理所有傳入/傳出流量。

這里的問題是你錯過了一個步驟:
您必須使用wsgen工具(在java中提供)生成所需的工件。

點擊這里: JAX WS教程
wsgen -d build -s build -classpath build helloservice.endpoint.Hello
並閱讀有關wsgen

說實話,我不記得你是如何通過Eclipse(其實我不知道這是否可以在Eclipse工作自動沒有需要運行做wsgen自己),但你可以手動運行它,只是復制生成的工件在您的項目。

至於

服務器運行時錯誤:java.net.BindException:地址已在使用中

這是不言自明的:只需使用另一個端口。 已經使用了8081。

檢查這個鏈接,

http://www.myeclipseide.com/documentation/quickstarts/webservices_jaxws/

以上鏈接提供了生成Web服務服務器和客戶端的分步詳細信息。

您從POJO開始,不需要注釋,JAX-WS運行時將在Tomcat服務器上部署后注意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM