Generate webservice stub from wsdl in Java - java

I am working on eclipse plugin which will have a wizard. This wizard will be available form example from context menu while mouse right click on Java editor.
The wizard will be responsible for collecting such information as:
location of WSDL filePackage name
When the wizard finishes, I would like to have stub of a webservice described in WSDL generated into package provided earlier.
THE QUESTION IS: How can I generate webservice stub dymanically and from source code (not from command line) and add it to the current project?
Until now, I came across WSDL2Java (Axis), Apache CXF and wsimport. I try to use Apache CXF and wsimport but I'm always getting ClassNotFoundException even though all jars are included into buildpath. I think I might have used them incorrectly.
Please help me folks! Time for that task is running out :-(
Little example:
Let's say the code is (Apache CXF):
String[] args = {"-client", "-d", "D:\\test", "D:\test.wsdl" };
WSDLToJava w = new WSDLToJava(args);
ToolContext t = new ToolContext();
w.run(t);
The first few lines of exception are:
java.lang.NoClassDefFoundError: org/apache/cxf/tools/wsdlto/WSDLToJava
at plugin.wsreplication.ui.wizard.component.AddComponentWizard.performFinish(AddComponentWizard.java:160)
at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:752)
at plugin.wsreplication.ui.wizard.component.AddComponentWizardDialog.finishPressed(AddComponentWizardDialog.java:39)
at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:373)
at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:228)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at plugin.wsreplication.ui.action.AddComponentAction.run(AddComponentAction.java:35)
at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)

Sounds to me like cxf-tools is not on your Classpath.
I'm not sure how it works with Eclipse plugins and OSGi, and exactly how to specify a classpath for your plugin, but you need to be able to specify where the CXF JARs are on the classpath.

It seems like you have done an error while setting up an environment for the plugin. Check this list for details.
If the error will not disappear, try to figure out an actual class path with System.getProperty("java.class.path"). If jar is really on a classpath, the problem may be in an Eclipse itself.

I had the same issue. stumbled across this question in stack overflow. The issue got resolved as soon I restarted the eclipse.
The issue was due to Apache CXF jars not set in eclipse. Once the home path of CXF is set in eclipse. Eclipse needs to be restarted to pick up the jars.Hope this is helpful for someone who is facing the same issue

Related

How to fix undefined MqttChannelInitializer constructor in HiveMQ Client?

I was using HiveMQ Client version 1.0.1 but I decided to update to the recently released version 1.1. I completely started from scratch and imported the project as a Gradle project and tried to build. The build work only after ignoring a few failed tests. I'm getting 3 errors in 3 different classes. I realize this is likely related to the Dagger dependency injection tool and I had already successfully built the project and added the directory of build/generated/source/apt/main/ to my build path as noted by my previous stack post where I had issues with a DaggerSingletonComponent not being found: How to fix DaggerSingletonComponent not resolved in HiveMQ (MQTT protocol) . This seems to be a new issue and I'm not sure what's wrong. I tried rebuilding by project but the errors still persist. I've left some screenshot below as well as the specific errors.
HiveMQ:
https://github.com/hivemq/hivemq-community-edition
https://github.com/hivemq/hivemq-mqtt-client
Errors:
The constructor MqttChannelInitializer(MqttClientConfig, MqttConnAckFlow, MqttEncoder, MqttConnectHandler, MqttDisconnectHandler, MqttAuthHandler, Lazy) is undefined
The constructor MqttSession(MqttClientConfig, MqttSubscriptionHandler, MqttIncomingQosHandler, MqttOutgoingQosHandler) is undefined
The method provideBootstrap(NettyEventLoopProvider, MqttChannelInitializer) in the type ConnectionModule is not applicable for the arguments (MqttClientConfig, NettyEventLoopProvider, MqttChannelInitializer)
Screenshots:
Executing ./gradlew clean build on the command line will fix your error.
But I also think that the real solution for your use case is to create a new empty project (gradle or maven) and add the client library as a dependency, like described here: https://hivemq.github.io/hivemq-mqtt-client/docs/installation.html
The issue turned out to be caused by an issue with the source folder in the directory build/generated/source/apt/main/ not having the option “Update exclusion filters in other source folders to solve nesting” selected. Selecting that option solved all of the errors.

FAIL - Deployed application at context path / but context failed to start

Im working in 2 separate webapplications a back and front app.
The funny thing is when I run the back-end I don't have any issues. But in the front-end I get the following error:
I have the following error in Netbeans
NetBeans: Deploying on Apache Tomcat or TomEE
profile mode: false
debug mode: false
force redeploy: true
Undeploying ...
undeploy?path=/
OK - Undeployed application at context path /
In-place deployment at D:\WebDevel\WebStore\WebFrontE\target\Web-1.0-SNAPSHOT
Deployment is in progress...
deploy?config=file%3A%2FC%3A%2FUsers%7E1%2FAppData%2FLocal%2FTemp%2Fcontext7815575477480252472.xml&path=/
FAIL - Deployed application at context path / but context failed to start
Both are running on the same Tomcat. my colleague has the same code and it works fine :-s
Context Path (or) Context Root must be unique for each application deployed on the server.
So you can't deploy two applications with same context root to the same server. It seems for both of your applications the context path is /.
Check server.xml to see what context path both of them have. If they are not unique, then change them to solve the problem.
But if you want the same context root for both applications, then you need to deploy them in two different servers.
For more information:
Tomcat Context paths configuration
I may be a little late but would say that this could be because of the change in the factory name in Tomcat 8. So follow the below steps:
1) First, see if you are using Tomcat 8 or higher.
2) If yes, and tomcat is not able to deploy your application. Run the application in Debug mode and see stack trace in Tomcat window (at bottom. Not same as Tomcat.log). Scroll down the window and see if you can find an Exception like this:
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory
3) If you see something like above, Open your META-INF/context.xml and replace or add the factory attribute in the resource tag with:
factory="org.apache.tomcat.dbcp.dbcp2.BasicDataSourceFactory"
4) Restart tomcat and redeploy.
While trying to deploy a spring boot web app from jenkins to an external VM I was getting the same error as below.
After I look into tomcat log I found it was for java version error. I didnt install proper java version which my spring boot application supports.
I installed openjdk 8 and removed java7 from vm and it was resolved.
The actual cause behind the below error can be many . so check your tomcat /logs/catalina.out directory for exact error. at Jenkins build log it doesn't give actual error.
FAIL - Deployed application at context path [/webapp] but context
https://www.youtube.com/watch?v=1jsKGhXmm4c
I had this problem a d after a lot of links that didn't work, found this solution. Edit the server.xml on your Tomee server to provide a fully qualified path for appBase:
<Host name="localhost" appBase="C:\apache\apache-tomee-7.0.2-plume\webapps"
unpackWARs="true" autoDeploy="true">
The following error occurs if your context has not started well.
Instance : You have context listener that calls a method and the method is not present.
My issue was a syntax error in web.xml, I didn't close an element
The tomcat window (NetBeans) had a clear errormessage, thanks Arafat
01-Sep-2018 17:34:38.641 SEVERE [http-nio-8080-exec-5] org.apache.tomcat.util.digester.Digester.fatalError Parse Fatal Error at line 50 column 11: The element type "param-value" must be terminated by the matching end-tag "".
I am also had trouble solving this kind of issue on my netbeans. I'm stack the whole day getting rid of this issue. Many solutions have been tried but still nothing happen until I tried to delete the "target" folder of my project and that solved the problem! Hope it helps! :)
I have came across this problems several times,i tried the below steps and it worked..!
1. Backup you current project(For safety).
2. Locate you project folder location (Normally found in MyDocuments or Documents folder named as NetBeansProjects).
3. Open the project folder and delete the folder named target inside your project folder
4. Close the NetBeans and re-open the it and run the project.
And you are good to go.
If the above didn't work then try deleting the xml file from the folder "Tomcat 9.0\conf\Catalina\localhost" folder.
I had this error while using Java Web due to a syntax error:
My Servlet code should be like this:
#WebServlet(name = "EleicaoServlet", urlPatterns = {"/EleicaoServlet", "/main", "/insert", "/edit", "/delete", "/update"})
But I forgot to type '/' in the "/update"
#WebServlet(name = "EleicaoServlet", urlPatterns = {"/EleicaoServlet", "/main", "/insert", "/edit", "/delete", "update"})
And I got this error.
So if nothing above works you may want to check your code, it can be something stupid like this.
I have tried
mvn clean install
and worked for me for the same problem :)
'undeployed application at context path' this error occur due to missing some file while copying project from one system to another.
while coping make sure all files should be copied.If an error occur then please recopy project and import it..
It may work..
I just had the same issue i solved by giving security permission to the user for Apache Server Foundation in root folder
in my case i removed some configuration tags that i added in web.xml,trying to configure a strut package.I also removed that package respectively,i restarted the server,run the project and it worked.
Faced the same problem # one time. In one of the instance, it was caused by a controller that had multiple methods with same route e.g
#RestController
public class UsersController
{
#Autowired
UsersInterface userInterface;
#RequestMapping(value = "/get", method = RequestMethod.GET)
public String test()
{
return "Users";
}
#RequestMapping(value = "/get", method = RequestMethod.GET)
public List<user> getUsers()
{
List<User> users = userInterface.getUsers();
return users;
}
}
As you can see, the controller has 2 methods that define two get routes, hence Spring cannot resolve the method to run the .../users/get route.
Remote one of the get routes and change it to something else.
I may be late to answer but might help others later in the future.
This could be many causes, but the most frequent personally in my case was the web.xml file servlet declarations. When I was cross developing a project both on Mac and Linux, I saw the file behave different in the two platforms due to some space or new line issues. It took me hours to find out as the servlet count was more than 20. Ultimately I narrowed down to strangely only one controller class declaration and found the syntax to be absolutely perfect. It bamboozled me, so I thought I'd rewrite the declaration after deleting the old one and BAM! It worked on Mac immediately. Strange.
I am facing this problem, after trying several other suggestions, the following thing worked perfectly for me.
Delete the following file:
/apache-tomcat-9.0.13/conf/Catalina/localhost/*.xml
This is a bit late but for anyone who might face the same error.
For me, this error was caused by wrong syntax in my servlet.
#WebServlet(urlPatterns = {"/x/login", "/x/register", "/x/logout", "x/createrestaurant"})
It looked like the above and I got the same error. After sometime and trying to deploy on a different server (from Tomcat to Glassfish), Glassfish gave me better logs and I realized the syntax should have been like this
#WebServlet(urlPatterns = {"/x/login", "/x/register", "/x/logout", "/x/createrestaurant"}).
Notice the / before x/createrestaurant.
I had the same issue with even newly added projects tried a lot of stuff mentioned above. what works for me is to manually Stop tomcat service in the Installation directory \Tomcat 9.0\bin Tomcat9w.exe. Then deployed the project it works this way in Netbeans IDE.
FAIL - Failed to deploy application at context path...
I was facing the same issue. But I resolved it. Please see the following steps:
First, stop the Tomcat service that is already running on the background, Not in the Netbeans. For this, go to TaskManager properties>Services>tomcat
Right click on the tomcat service to stop
Now, after that. Close netbeans IDE and run again
Right click on the project and select run. The project will be running without any issue
I hope above solution will be helpfull who having the same error.
One Problem could be the port you are trying to use might be being used by another application. Try changing the port or clearing that one and it might work fine.
Problem has been resolved by stopping the Tomcat server
sudo systemctl stop tomcat
so as to allow Netbeans to run it. If the server is already running when Netbeans tries to deploy an app Netbeans will display the delopy failed message.
I had the same problem, but I used only maven (without IDE). My tomcat version was tomcat7 7.0.70-1 and jdk8 (in pom.xml: <java.version>1.8</java.version>) It turned out that tomcat7 incompatible with java 8, so, I changed java.version in pom.xml on <java.version>1.7</java.version> and that was the solution!
I had same problem and I resolved this issue by stopping the tomcat from IDE and run the web application it starts the tomcat automatically.(This works in Netbeans IDE). Simply Stop Tomcat and start again and redeploy web application.

Navigation Engine not able to process request

I get the following error in Endeca:
com.endeca.navigation.ENEException: Navigation Engine not able to process
request `http://myhost:15000/search?terms=remote&rank=0&offset=0&irversion=601`
My MDEX version is 6.3.0
The referenced jar files in my app is:
endeca_navigation.jar : Specification-IR-Version: 6.3.0 (Read from MANIFEST file)
endeca_logging.jar: Specification-Version: 6.1.2 (Read from MANIFEST file)
Even with these referenced jars, why is the request parameter still irversion=601?
I'm using java 1.5 and building my app in eclipse. At first, it was referencing older jar files (601), but i removed those completely and replaced them with the newer jar files listed above. I've rebuilt my app and I still see the parameter irversion=601. I've been trying to find out what the issue is for a few hours, but i'm having no luck.
Any ideas?
If nothing else I think that you need an N=0 parameter for you request to work.
Also if you are using an application server like Weblogic to run you app, it has a tendency of caching referenced jars which may have to be cleared for it to pick up the new versions of the jars.
Finally if all else fails there is a --back_compat 601 parameter on your dgraph which indicated the accepatble navigation.jar versions. You can use this parameter to determine if the issue is the jar version or something else in between.
Good Luck
Additionally to Wiszh's response, it is useful to take a look at the dgraph request query logs (located in /logs/dgraph/Dgraphxx/Dgraphxx.log and .reqlog) which will show a more specific error and the query that caused it.
Do your jars match the version of Endeca server you are querying?
This issue is due to an old navigation api jar in your class path
Check the ToolsAndFrameworks\version\assembler\lib to get the correct version of navigation api jar. That should fix this issue.
correct jar path fixed the issue for me
ToolsAndFrameworks\version\assembler\lib

Using Xalan in Eclipse plugin

I am facing problems with using xalan in eclipse plugin.
When I try to create factory instance by:
TransformerFactory tFactory = TransformerFactory.newInstance("org.apache.xalan.processor.TransformerFactoryImpl", null);
I get error:
javax.xml.transform.TransformerFactoryConfigurationError: Provider org.apache.xalan.processor.TransformerFactoryImpl not found
...
I have following libs in plugin classpath: xml-apis.jar, xercesImpl.jar, serializer.jar, xalan.jar
I even can't create class instance by:
c = Class.forName("org.apache.xalan.processor.TransformerFactoryImpl");
Object o = c.newInstance();
It returns ClassNotFoundException
But I can create instances of other classes from same jar and can run same code outside eclipse without problem.
Any idea?
Edit: TransformerFactory instantiating class (say "class1") is part of an external library added in the plugin classpath wheras the xalan.jar is also in plugin classpath. If I move this "class1" into plugin, it finds the provider and works fine.
Though I have seen this problem once, but I am not very sure how i solved it.
If you are using JDK 1.5 or above then try removing xml-apis.jar. It was needed for Java 1.4 to support XML.
Update 1
Ok. From your question I inferred that you are writing a eclipse plug-in. If yes, then have you added the above jars using plugin.xml->Runtime->classpath? If not try to do so. Eclipse plugin considers only its runtime->classpath entries
Update 2
To me it still appears as a classpath resolution issue. Though, its hard to say why its happening. For a try you can also check by changing the order of included jars in plugin.xml->Runtime->classpath.
Hope this will help.
PS: Since you are working on eclipse plug-in development therefore I would suggest you to go through this article Eclipse - a tale of two VMs and many classloaders.

Hibernate in Servlet causesNoClassDefFoundError: org/slf4j/LoggerFactory

I have a Java (6) application which uses Hibernate (V3.3.2) to read data from HSQLDB, which i build and debug/run with Eclipse (V3.5.1), and it works fine.
I then created a GWT (V1.7) Servlet web app, copied my hibernate classes into it, and added the same User Libraries dependencies. However when i run the servlet and try to access a URL which invokes my code i get this:
java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory
at org.hibernate.cfg.Configuration.<clinit>(Configuration.java:152)
at xxx.daoimpl.DAOSession.initialise(DAOSession.java:40)
where DAOSession.java:40 is :
AnnotationConfiguration config = new AnnotationConfiguration ();
Googling for this error suggests i am missing slf4j-api.jar from the classpath, however if i look at the command line for the Debug properties i can see this jar there:
C:\java\jsedk_6\jre\bin\javaw.exe
-agentlib:jdwp=transport=dt_socket,suspend=y,address=localhost:54541
-Xmx512m -Dfile.encoding=Cp1252
-classpath
D:\dev\workspace\xxx\src;
D:\dev\workspace\xxx\resources;
D:\dev\workspace\xxx\war\WEB-INF\classes;
C:\java\eclipse\plugins\com.google.gwt.eclipse.sdkbundle.win32_1.7.1.v200909221731\gwt-windows-1.7.1\gwt-user.jar;
C:\java\eclipse\plugins\com.google.gwt.eclipse.sdkbundle.win32_1.7.1.v200909221731\gwt-windows-1.7.1\gwt-dev-windows.jar;
C:\java\hibernate-annotations-3.4.0.GA\hibernate-annotations.jar;
C:\java\hibernate-annotations-3.4.0.GA\lib\ejb3-persistence.jar;
C:\java\hibernate-annotations-3.4.0.GA\lib\hibernate-commons-annotations.jar;
C:\java\hibernate-distribution-3.3.2.GA\hibernate3.jar;
C:\java\hibernate-distribution-3.3.2.GA\lib\required\antlr-2.7.6.jar;
C:\java\hibernate-distribution-3.3.2.GA\lib\required\commons-collections-3.1.jar;
C:\java\hibernate-distribution-3.3.2.GA\lib\required\dom4j-1.6.1.jar;
C:\java\hibernate-distribution-3.3.2.GA\lib\required\javassist-3.9.0.GA.jar;
C:\java\hibernate-distribution-3.3.2.GA\lib\required\jta-1.1.jar;
C:\java\hibernate-validator-4.0.1.GA\hibernate-validator-4.0.1.GA.jar;
C:\java\hibernate-validator-4.0.1.GA\lib\validation-api-1.0.0.GA.jar;
C:\java\hibernate-validator-4.0.1.GA\lib\log4j-1.2.14.jar;
C:\java\hsqldb\lib\hsqldb.jar;
C:\java\restlet-jse-2.0m5\lib\org.restlet.jar;
C:\java\restlet-jee-2.0m5\lib\org.restlet.ext.servlet.jar;
C:\java\restlet-jse-2.0m5\lib\org.restlet.ext.xml.jar;
C:\java\slf4j-1.5.8\slf4j-api-1.5.8.jar;
C:\java\slf4j-1.5.8\slf4j-log4j12-1.5.8.jar
com.google.gwt.dev.HostedMode
...
If i open the jar i can see the LoggerFactory class in there.
Any idea why it isn't being found by the class loader?
Edit 1: If try to access org.slf4j.LoggerFactory from my code, Eclipse compiles it ok, but i get the same error at runtime.
Edit 2: If i add a Test class with a main which calls the same code and run it, it works. So this classpath problem seems specific to the Servlet.
thanks,
jon
It seems that copying the two slf4j jars to the war/WEB-INF/lib sub-project/dir fixed the problem. I'm not really sure why i should need to do this for these two jars and not for all the other Hibernate, Restlet etc jars that the project also uses, though i suppose for consistency i will do that anyway - i guess it will make deployment easier as well.
If someone can provide some sort of explanation as to why this worked and why exactly i need to do it i will select it as the "correct" answer, otherwise i'll select this one.
Can you please reconfirm that you have at least two slf4j.jar files in the classpath, the slf4j-api.jar and exactly one implementation, such as slf4j-jdk14.jar?
You must not have multiple sflj4-implementations in the classpath.
You have a runtime dependency issue so everything compiles fine but the dependency is in your jars. You need to visit the Hibernate site and look at the compatibility matrix and make sure you are matched up correctly then check the dependencies for annotations and core. You log4J jars look fine so it's definitely some quirk.
If it works in Eclipse then logically it's definitely some diff between the 2 runtimes (eclipse and non-eclipse), if the matrix checks out fine then see if you can factor out the commonalities in the 2 then work out the differences -- your answer should be in there.
I had a similar issue except I was using Tomcat and the NoClassDefFound error was on the juli logger. I fixed it by removing the Tomcat dependencies from my classpath when running in hosted mode because hosted mode embeds a Tomcat server that was conflicting. So I would see what happens if you remove some or all of the restlet jars from your classpath to see if they conflict.

Categories

Resources