GlassFish Server部署

en *_*pes 5 java web-services glassfish jax-ws jaxws-maven-plugin

我是GlassFish Server和WS的新手.我刚刚部署了一个Web应用程序.使用具有此web.xml的maven生成

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Archetype Created Web Application</display-name>


</web-app>
Run Code Online (Sandbox Code Playgroud)

我单击Web应用程序链接

我在应用程序中有这个类:

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

import javax.servlet.http.HttpSession;

import javax.xml.ws.WebServiceContext;

import javax.xml.ws.handler.MessageContext;


    @WebService(serviceName="IberiaWS")
    public class IberiaWS {

      @Resource
      private WebServiceContext wsContext;  

      public IberiaWS () {
      }

      private UserVO getSessionUserVO() {
        MessageContext mc = wsContext.getMessageContext();
        HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
        return (UserVO)session.getAttribute("uservo");
      }

      private void setSessionUserVO(UserVO uservo) {
        MessageContext mc = wsContext.getMessageContext();
        HttpSession session = ((javax.servlet.http.HttpServletRequest)mc.get(MessageContext.SERVLET_REQUEST)).getSession();
        session.setAttribute("uservo", uservo);

      }

      @WebMethod
      public boolean login(String loginName, String loginPwd) throws Exception {
        this.setSessionUserVO(new UserDAO().findUser("_"+loginName, "__"+loginPwd));
        return isConnected();
      }

      @WebMethod
      public boolean isConnected() {
        return (this.getSessionUserVO()!=null);
      }

      @WebMethod
      public IberiaPerson getPerson(String id) {
        return new IberiaPerson();   
      }

      @WebMethod
      public IberiaPerson findPerson(String companyNr) {
        UserVO uservo = this.getSessionUserVO();
        IberiaPerson ret=null;
        PersonVO p= new PersonDAO().findByCompanyNr(uservo.getAdminCenterId(), uservo.getUserId(), "Iberia", companyNr);
        if (p!=null) {
          ret = new IberiaPerson();
          ret.setPersonId(p.getPersonId());
          ret.setCompanyName(p.getVehicleOwnerName());
          ret.setCategoryName(p.getCategoryName());
          ret.setCompanyNr(p.getCompanyNr());
          ret.setFirstName(p.getFirstName());
          ret.setLastName(p.getLastName());
          ret.setStatusId(p.getStatusId());
          ret.setGroupName(p.getGroupList());
          ret.setKeyCode(p.getKeyString());   
          ret.setComments(p.getLmComment());
        }
        return ret;   
      }
    }
Run Code Online (Sandbox Code Playgroud)

自从我在Engines中看到它以来,似乎已经部署了WS

我可以访问spp.HTTP://本地主机:8080/iberiafleet /

但我现在不知道如何访问已部署的WS的WSLD

我在此URL上获得了HTTP状态404

HTTP://本地主机:8080/iberiafleet/IberiaWSPort WSDL

并且

HTTP://本地主机:8080/iberiafleet/IberiaWS WSDL

但根据本教程,我应该看到一个链接View Endpoint

https://blog.idrsolutions.com/2013/08/creating-and-deploying-a-java-web-service/

但我没有看到它.

在此输入图像描述

我可以在控制台中看到此消息:

  [#|2017-11-13T10:50:39.993+0100|INFO|glassfish 5.0|javax.enterprise.webservices.metroglue|_ThreadID=19;_ThreadName=RunLevelControllerThread-1510566633374;_TimeMillis=1510566639993;_LevelValue=800;_MessageID=AS-WSMETROGLUE-10010;|
  Web service endpoint deployment events listener registered successfully.|#]
Run Code Online (Sandbox Code Playgroud)

Tob*_*ers 0

I think you have a typo in your WSDL URL, does

http://localhost:8080/iberiafleet/IberiaWS?wsdl
Run Code Online (Sandbox Code Playgroud)

work?