2011-03-04 80 views
0

裏面我有一個Web服務方法我們可以調用一個servlet web服務方法

@WebMethod 
public void getCapturedImages(String image) 
System.out.println(" image " + image); 
} 

而且我的servlet類:

public class GetWebApplicationPathServlet extends HttpServlet { 
private static final long serialVersionUID = 1L; 
private static ServletContext context; 

public static ServletContext getContext() { 
    return context; 
} 

public static void setContext(ServletContext context) { 
    GetWebApplicationPathServlet.context = context; 
} 

/** 
* @see HttpServlet#HttpServlet() 
*/ 
public GetWebApplicationPathServlet() { 
    super(); 
    // TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doGet(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 

    System.out.println("doGet(HttpServletRequest"); 
    String path = getServletContext().getRealPath(""); 

    context = getServletContext(); 
    String path1 = context.getRealPath("/images"); 
    System.out.println("path1"+path1); 

    /* 
    * PrintWriter writer = response.getWriter(); 
    * writer.println("Application path: " + path); 
    */ 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse 
*  response) 
*/ 
protected void doPost(HttpServletRequest request, 
     HttpServletResponse response) throws ServletException, IOException { 
    // TODO Auto-generated method stub 
} 

,我們可以調用webservice的方法在我的servlet類。

回答

1

可以發出包括使用將用於從直接HTTP請求調用Servlet的路徑:

@Resource 
private WebServiceContext context; 

private void invokeServlet() throws IOException, ServletException 
{ 
    ServletContext servletContext = (ServletContext) context.getMessageContext().get(MessageContext.SERVLET_CONTEXT); 
    HttpServletRequest request = (HttpServletRequest) context.getMessageContext().get(MessageContext.SERVLET_REQUEST); 
    HttpServletResponse response = (HttpServletResponse) context.getMessageContext().get(MessageContext.SERVLET_RESPONSE); 
    servletContext.getRequestDispatcher("/path/to/servlet").include(request, response); 
} 

參見:How can I access the ServletContext from within a JAX-WS web service?

+0

我的情況下返回空值..給出一個解決方案請 – jennifer 2011-03-04 09:15:49

+0

我使用帶有JboSS工具包的eclipse創建了webservices。另外通過使用WebServiceContext註釋,上下文值爲null .. – jennifer 2011-03-04 09:24:34

+0

@jennifer根據http://stackoverflow.com/questions/261348/how-can-i-access-the-servletcontext-from-within-a中的評論-jax-ws-web-service/261349#261349您應該嘗試刪除WEB-INF/lib中的common-annotations.jar,因爲這會導致類加載器衝突。目前無法進一步調查。 – 2011-03-04 11:11:40

1

您可能可以但有問題。你需要做的是創建一個可以調用來執行你需要的功能的方法。

2

爲了調用這個類,你必須創建它的一個實例,自己構造HttpServletRequest對象,然後調用它。或者您可以從Web服務發出Http請求。

這兩種解決方案都不推薦。你最好創建一個類來實現所需的功能,並從兩個地方調用它。

相關問題