Java 我们可以在webservice方法中调用servlet吗
我有一个webservice方法Java 我们可以在webservice方法中调用servlet吗,java,web-services,web-applications,jakarta-ee,Java,Web Services,Web Applications,Jakarta Ee,我有一个webservice方法 @WebMethod public void getCapturedImages(String image) System.out.println(" image " + image); } 我的servlet类是: public class GetWebApplicationPathServlet extends HttpServlet { private static final long serialVersionUID = 1L; pr
@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类。您可能可以,但这是有问题的。您需要做的是创建一个方法,两者都可以调用该方法来执行所需的功能。您可能可以,但这是有问题的。您需要做的是创建一个方法,两者都可以调用该方法来执行所需的功能。为了调用该类,您必须创建该类的实例,自己构造HttpServletRequest对象,然后调用它。或者您可以从web服务向它发出Http请求
这两种解决方案都不推荐。您最好创建一个能够实现所需功能的类,并从两个位置调用它。为了调用该类,您必须创建它的实例,自己构造HttpServletRequest对象,然后调用它。或者您可以从web服务向它发出Http请求
这两种解决方案都不推荐。您最好创建一个实现所需功能的类,从两个位置调用它。您可以使用用于从直接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);
}
另请参见:您可以使用用于从直接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);
}
另请参见:My context返回空值。。请给出一个解决方案我使用eclipse和JboSS工具包创建了webservices。此外,通过使用WebServiceContext注释,上下文值为null。@jennifer根据中的注释,您应该尝试删除WEB-INF/lib中的common-annotations.jar,因为这会导致类加载器冲突。目前无法进一步调查。我的上下文返回空值。。请给出一个解决方案我使用eclipse和JboSS工具包创建了webservices。此外,通过使用WebServiceContext注释,上下文值为null。@jennifer根据中的注释,您应该尝试删除WEB-INF/lib中的common-annotations.jar,因为这会导致类加载器冲突。目前无法进一步调查。