Webservice reference in servlet fails with "cannot be resolved to a type"

I am trying to create a servlet (tomcat) that accesses a database, then a USDA web service. I've successfully deployed/tested the database connectivity. When I added the web service access, eclipse reports the problem: AwdbWebService_Service cannot be resolved to a type. I think I am referencing the service, not a type--anyway, it won't resolve as a service instance with whatever I am doing incorrectly. I generated the AwdbWebService package from a wsimport from the wsdl @wcc.nrcs.usda.gov/awdbWebService/services?WSDL . Please advise.

The error is tripped by this line (#74):

AwdbWebService_Service lookup = new AwdbWebService_Service(wsURL,new QName("http://www.wcc.nrcs.usda.gov/ns/awdbWebService","AwdbWebService"));

 package localdomain.localhost;

 import java.io.IOException;
 import java.io.PrintWriter;
 import java.math.BigDecimal;
 import java.net.URL; //added for usda webservice

 import java.sql.Connection;
 import java.sql.ResultSet;
 import java.sql.Statement;
 import java.text.SimpleDateFormat;
 import java.util.*;
 import java.util.logging.Logger;

 import javax.annotation.Resource;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletException;
 import javax.servlet.annotation.WebServlet;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import javax.sql.DataSource;

 import javax.xml.namespace.QName;       // added for usda webservice
 import usda.nrcs.wcc.awdbWebService.*;

 @WebServlet(value = "/MyServlet")
 public class MyServlet extends HttpServlet {

   // use this for usda reservoir station values later
   static final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd");

   protected final Logger logger = Logger.getLogger(getClass().getName());
   @Resource(name = "jdbc/mydb", lookup = "jdbc/mydb")
   private DataSource dataSource;



   @Override
   public void init(ServletConfig config) throws ServletException {
      super.init(config);
      logger.info("Init");
      System.out.println(getClass().getName() + ".init");
  }



  protected void service(HttpServletRequest req, HttpServletResponse resp) throws  ServletException, IOException 
{
    PrintWriter writer = resp.getWriter();

    writer.println("<html>");
    writer.println("<head><title>MyServlet</title></head>");
    writer.println("<body><h1>MyServlet</h1>");

    writer.println("<h2>DataSource</h2>");
    Connection conn = null;
    try {
        writer.println("Datasource: " + dataSource + "<br/><br/>");
        conn = dataSource.getConnection();
        Statement stmt = conn.createStatement();
        ResultSet rst = stmt.executeQuery("select 1");
        while (rst.next()) {
            writer.println("Resultset result: " + rst.getString(1) + "<br/><br/>");
        }
        rst.close();
        stmt.close();
        conn.close();
        writer.println("SUCCESS to access the datasource");

        // Now try accessing usda
        URL wsURL = new URL("http://www.wcc.nrcs.usda.gov/awdbWebService/services?wsdl");

        AwdbWebService_Service lookup = new AwdbWebService_Service(wsURL,new QName("http://www.wcc.nrcs.usda.gov/ns/awdbWebService","AwdbWebService"));
        m_webService = lookup.getAwdbWebServiceImplPort();


    } catch (Exception e) {
        e.printStackTrace(writer);
        e.printStackTrace();
    } finally {
        if (conn != null) {
            try {
                conn.close();
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
    writer.println("</body></html>");

}

Open in new window

Paula DiTalloIntegration developerAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

CEHJCommented:
import usda.nrcs.wcc.awdbWebService.*;

Open in new window

Try using the IDE to dig into that to get the type that it's telling you is missing. I suspect you won't be able to, so , if so, there's something wrong with the way you're pointing at the generated classes.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Paula DiTalloIntegration developerAuthor Commented:
It thinks awdbwebservice is a type -- the wizard keeps popping up for me to define a new class. I've got plenty of those under the imported package! :) The import usda.nrcs.wcc.awdbWebService.* package has about 2 dozen method classes.  I just rebuilt it all again from the wsdl--on c:\  to keep it pure.  The full path it generated:
c:\gov\usda\nrcs\wcc\awdbWebService.  I removed the old package location from the project, this time pointing to the one I just created. This time the import line looks like:  import gov.usda.nrcs.wcc.awdbWebService.*;  Same maddening results.

Here's the import statement:
wsimport -p gov.usda.nrcs.wcc.awdbWebService -s c:\ http://www.wcc.nrcs.usda.gov/awdbWebService/services?WSDL
0
Paula DiTalloIntegration developerAuthor Commented:
cehj,
to answer your direct suggestion, there isn't any additional info as to what type it thinks it needs to resolve to. just that it thinks i'm referencing one.
0
Cloud Class® Course: SQL Server Core 2016

This course will introduce you to SQL Server Core 2016, as well as teach you about SSMS, data tools, installation, server configuration, using Management Studio, and writing and executing queries.

CEHJCommented:
Don't import .* Import each type you use
0
Paula DiTalloIntegration developerAuthor Commented:
alright, I'll try that.
0
Paula DiTalloIntegration developerAuthor Commented:
@CEHJ,
You are correct about the import. Thanks so much for your help ! :)

For those following this thread:

The package statement at the start of the java classes I generated with wsimport begins with:

package gov.usda.nrcs.wcc.awdbWebService

My import statement however, looked like this: import usda.nrcs.wcc.awdbWebService.*;

In essence, I placed the source @ the wrong level and defined the build config to point incorrectly for the package references defined in the java classes. I removed the build reference, then moved the tree to begin pointing on the gov level. Now that there wasn't a mismatch, the unresolved type error vanished.
0
CEHJCommented:
Good. Furthermore, as i hinted above, its bad practice to import .* All classes should be named explicitly. If you're using an IDE, there's no excuse, as something like 'Fix imports' will do that for you automatically
0
Paula DiTalloIntegration developerAuthor Commented:
While CEHJ identified the import as a problem, the details I've outlined in exactly why would be helpful to anyone following this thread with a similar issue.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Programming Languages-Other

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.